Hi Felipe, I like the idea. It makes indirect method calls less expensive.
I would add a hint to specializer, to eliminate small overhead for regular function calls.
} else if (OP1_TYPE != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY) && zend_hash_num_elements(Z_ARRVAL_P(function_name)) == 2) { Thanks. Dmitry. On 06/05/2011 07:52 PM, Felipe Pena wrote:
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? [1] - http://bugs.php.net/bug.php?id=47160 [2] - http://felipe.ath.cx/diff/fr47160.diff phpt: http://felipe.ath.cx/diff/fr47160.phpt
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php