On 8 June 2010 16:57, Ford, Mike <m.f...@leedsmet.ac.uk> wrote: >> -----Original Message----- >> From: Jacob Oettinger [mailto:ja...@oettinger.dk] >> Sent: 08 June 2010 14:09 >> >> On 08/06/2010, at 12.41, Johannes Schlüter wrote: >> >> > On Tue, 2010-06-08 at 12:23 +0200, Jacob Oettinger wrote: >> >> Would it be equally simple to allow the syntax below? >> >> >> >> $result = new ResultMaker()->getIt(); >> > >> > does this mean >> > >> > $result = new (ResultMaker()->getIt()); >> > >> > or >> > >> > $result = (new ResultMaker())->getIt(); >> > >> > I assume the later, but that is non-obvious as we allow >> > >> > $result = new $class(); >> >> Yes the later. I do not see how the above makes it non-obvious. > > I think the only problem with deciding which it means is that -> and () are > not defined as operators in the PHP documentation, and as such do not have a > clearly-defined precedence and associativity. In Javascript, "." (property > access) and "()" (function call) both appear in the operator precedence > table, so there are definite rules for ascertaining the meaning of such a > construct. > > Up until recently this probably hasn't really been a problem, as it's not > been possible to write constructs that needed these rules to decipher them. > However, with the previous addition of object access chaining, and now array > dereferencing, the time has almost certainly come to add -> and () to the > operator documentation, with appropriate precedence and associativity. > > (Incidentally, other operators which are not documented in the "Operators" > section, and probably should be, include :: (which *is* described in the > "Classes and Objects" section as the "Scope Resolution Operator", and \ > (namespace separator).) >
The operator that really determines this is 'new' - which is already documented. So there isn't any ambiguity. Not to say that documenting the other operators would be bad, just saying there's no ambiguity here :) Also, allowing "new (blah());" would be a fairly big BC break I'd say. Regards Peter -- <hype> WWW: http://plphp.dk / http://plind.dk LinkedIn: http://www.linkedin.com/in/plind BeWelcome/Couchsurfing: Fake51 Twitter: http://twitter.com/kafe15 </hype> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php