RE: [PHP-DEV] function call chaining

From: Date: Tue, 19 Jan 2010 17:26:42 +0000
Subject: RE: [PHP-DEV] function call chaining
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-46814@lists.php.net to get a copy of this message
> -----Original Message----- > From: Stanislav Malyshev [mailto:stas@zend.com] > Sent: 19 January 2010 00:28 > To: 'PHP Internals' > Subject: [PHP-DEV] function call chaining > > Hi! > > I wrote a small patch that enables this kind of syntax in PHP: > > foo()(); > > What it means is that if foo() returns callable value (which > probably should be function name or closure) then it would be > called. Parameters and more than two sets of () work too. > Of course, this is mostly useful for doing closures, and that > was primary drive for implementing it - to make working with > closures and especially function returning closures easier. > What does not work currently is $foo->bar()() - since it is > surprisingly hard to tell parser it's not {$foo->bar}()() - > which of course is not what I want to do. > > The patch is here: http://random-bits-of.info/funcfunc.diff > > What do you think? If somebody has better idea btw - maybe > make something like {foo()}() - and make that work for any > expression inside {} - that might work too. So, what do you think? > -- > Stanislav Malyshev, Zend Software Architect > stas@zend.com http://www.zend.com/ > (408)253-8829 MSN: stas@zend.com > > -- > PHP Internals - PHP Runtime Development Mailing List To > unsubscribe, visit: http://www.php.net/unsub.php > I've run into problems with $foo[1](); If the closure attempts to change the value of $foo[1] then PHP complains. So was forced to assign to a temporary variable before hand. $f = $foo[1]; $f(); I guessing foo()() could also suffer from the problem? Jared

« previous php.internals (#46814) next »