Re: Late FQCN resolution using ::class
You can use the "static" late static binding keyword for this, it works,
see:
http://3v4l.org/l9Z5Y
On Mon, Feb 25, 2013 at 11:00 AM, Jens Riisom Schultz <[email protected]>wrote:
> Hi everybody,
>
> I have read up on this, and done some testing.
>
> First up, my findings with PHP5.5 alpha5:
>
> <?php
> namespace spacy;
>
> class classy {
> public static function fqcn() {
> /* This works but is not useful enough: */
> //return self::class;
>
> $me = 'classy';
>
> /* This just doesn't work, but I wish it did: */
> //return $me::class;
>
> /* This simply does not work as expected: */
> return eval("return $me::class;");
> /* Output: "classy" - Expected output: "spacy\classy" */
> }
> }
> ?>
>
> I'm trying to late resolve a class name contained in a variable to the
> FQCN. I understand that this is hard (maybe even impossible) with the
> current implementation, because class name resolution happens compile time,
> but eval("return $me::class;") simply returns something that is weird.
>
> I guess what I'm trying to ask is whether it would be impossible to
> support late FQCN resolution in any way? It would be very useful for
> frameworks to be able to do this.
>
> - Jens Riisom Schultz
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Thread (16 messages)