On 2011-06-05, Felipe Pena <[email protected]> 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 | [email protected]
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