[prev in list] [next in list] [prev in thread] [next in thread]
List: php-internals
Subject: Re: [PHP-DEV] property de-referencing
From: Rasmus Schultz <rasmus () mindplay ! dk>
Date: 2013-04-30 23:55:55
Message-ID: CADqTB_hidduzyNhpbmqrS1KZTrG7MUneKOLn1eqUyb=MmaBXMw () mail ! gmail ! com
[Download RAW message or body]
On Tue, Apr 30, 2013 at 7:34 PM, Adam Harvey <aharvey@php.net> wrote:
> I would caution against generalising use cases. Personally, ::class is
> something I can use multiple times a day. This I'm not so sure about.
>
> Your use case is not my use case, and vice versa. :)
>
What is your use-case then? DI perhaps?
> Why does this have to be a language feature?
>
I already covered that.
> It obviously already works in userland, as your own Symfony 2 examples
> show.
>
As explained, this is not intended to solve a problem that can't currently
by solved by other means, but to strengthen the static aspects of the
language.
> One could
> write a PropertyReference class right now with literally the only
> difference being the lack of a builtin operator (ie new
> PropertyReference($obj, 'prop') versus ^$obj->prop): the fact that
> nobody seems to have done this in a major framework I know of suggests
> that there isn't a strong need for encapsulating the indirection
> beyond the $obj->$prop syntax that's worked forever.
>
Look at the Symfony form-builder example - encapsulating the indirection is
*precisely* what they're doing: the object reference is stored in the
form-builder, and property-names are added subsequently.
Yes, you can already create property-references at run-time - for that
matter, you could already use new ReflectionProperty($obj, 'prop') to do
what you demonstrated above.
But the property-name, in the source-code, is a string - it has no literal
relationship to YourClass::$prop where as ^$obj->prop does.
No mainstream framework provides a PropertyReference class, because it
wouldn't accomplish anything - the property-name is still a string, it's
still unchecked, and still can't (reliably) be used in static analysis.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic