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

Reply via email to