Re: 5.4's New De-referencing plus assignment
| From: | devis at lucato dot it | Date: | Wed, 30 Nov 2011 19:45:12 +0000 |
| Subject: | Re: 5.4's New De-referencing plus assignment | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-56690@lists.php.net to get a copy of this message | ||
Hi,
personally I would find the proposed syntax very useful, similarly to the
following one that is already implemented:
if ($value = foo()) return $value
instead of
$value = foo();
if ($value) return $value;
Regards,
Devis
On 30 November 2011 19:13, Nikita Popov <nikita.ppv@googlemail.com> wrote:
> To me the main problem here is that $bar = ($foo = new Foo)->bar()
> simply doesn't make much sense. It is equivalent to:
> $foo = new Foo;
> $bar = $foo->bar();
> Which is much cleaner and easier to understand.
>
> The plain (new Foo)->bar() syntax *is* useful for cases like (new
> ReflectionClass($class))->implementsInterface('Foo'), where you need
> only one single bit of information from a class.
>
> Nikita
>
> On Wed, Nov 30, 2011 at 8:02 PM, Ralph Schindler
> <ralph@ralphschindler.com> wrote:
> > Nikita,
> >
> > You're completely right about the expanded expressions, but I'm not sure
> its
> > an edge-case per-se.
> >
> > The problem with the current syntax is that the resultant of the 'new'
> > operation is lost UNLESS your chained method returns $this - which IMO
> makes
> > it about as 1/2 as useful as it really could be.
> >
> > In the case of "new" though, the resultant is always an object, it seems
> > like it should be permissible to change the parser to allow for variable
> > assignment of the target object.
> >
> > I think for people just trying out this new behavior (by seeing it in the
> > release notes as (new Foo)->bar()), the next logical thing is to try this
> > syntax:
> >
> > ($foo = new Foo)->bar()
> >
> > // OR in bison
> > '(' variable '=' new_expr ')'
> >
> > I did it, and I see other people doing it too. So I guess the question
> is...
> > "how edge case is this edge case?" :)
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>