On 2011-06-05, Felipe Pena <felipe...@gmail.com> wrote: > Reading our bug tracker I noticed a good feature request [1] from 2009 > which points to an interesting feature that I think makes sense for > us, since we are now working with $f() using objects and strings, and > the array('class', 'method') is an old known for call_user_func()-like > functions. > > So, I wrote a patch [2] that allow such behavior to be consistent with > arrays. See some examples: > > class Hello { > public function world($x) { > echo "Hello, $x\n"; return $this; > } > } > > $f = array('Hello','world'); > var_dump($f('you')); > > $f = array(new Hello, 'foo'); > $f(); > > All such calls match with the call_user_func() behavior related to > magic methods, static & non-static methods. > > The array to be a valid callback should be a 2-element array, and it > must be for the first element object/string and for the second string > only. (just like our zend_is_callable() check and opcodes related to > init call) > > Any thoughts?
Huge +1 from me -- having to do constructs like the following have been a huge headache for me: if (is_callable($callback)) { if (is_object($callback) || is_string($callback)) { return $callback($arg); } return call_user_func($callback, $arg) } This would simplify that tremendously: if (is_callable($callback)) { return $callback($arg); } -- Matthew Weier O'Phinney Project Lead | matt...@zend.com Zend Framework | http://framework.zend.com/ PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php