Hi, 2011/6/8 Christian Kaps <christian.k...@mohiva.com>
> Hi, > > > Hi all, >> 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? >> >> > > what happens if I use this code. > > class Foo { > > public $bar; > > public function __construct() { > > $this->bar = array($this, 'baz'); > $this->bar(); > } > > public function bar() { > echo 'bar'; > } > > public function baz() { > echo 'baz'; > } > } > > new Foo(); > > What is the output of this snippet? > > Are there the same rules as for closures? > > Christian > > Yes, the same rules. -- Regards, Felipe Pena