On Sat, Apr 14, 2012 at 12:50 PM, Ralph Schindler
<[email protected]>wrote:
> Hi all,
>
> There are many different use cases were in code we expect classes names as
> arguments to functions as fully qualified names. We do this in ZF a lot
> with our Service Location and DI components, but also with our code
> reflection API, etc. A more interesting use case I would like to call out
> is with PHPUnit, for example in a test, you might find this:
>
> $mock = $this->getMock('A\Namespaced\**ClassName');
>
> [...]
>
>
> This overloads the "class" keyword, and by virtue of the existing usage of
> "class" this feature is completely backwards compatible. All existing
> tests pass. For example, the above PHPUnit snipped would become:
>
> Would it be easy to have a patch that simply allows use of the class name,
or is the "::class" suffix necessary to resolve some ambiguity? Example
usage:
$mock = $this->getMock(A\Namespaced\**ClassName);
# or
use A\Namespaced\ClassName;
$mock = $this->getMock(ClassName);
Would changing the definition for class_name_scalar be sufficient?
class_name_scalar:
class_name { zend_resolve_class_name(&$1, ZEND_FETCH_CLASS_GLOBAL,
1 TSRMLS_CC); $$ = $1; }
;
To my eye, this is the least surprising syntax.