Re: 5.4's New De-referencing plus assignment

From: 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 > >

« previous php.internals (#56690) next »