2014-11-06 34 views
1

考虑下面的类:回调存储在类成员中,如何调用?

class Callbackhandler() { 
    private $cb; 

    public function __construct(callable $cb) { 
     $this->cb = $cb; 
    } 

    public function callme() { 
     return $this->cb(); 
    } 
} 

调用它像往常一样,像这样:

$callback = function() { return "Hello"; }; 
$handler = new Callbackhandler($callback); 
echo $handler->callme(); 

产生Call to undefined method错误,因为场cb不是方法。如何在不使用call_user_func()的情况下从类内正确调用回调?

+1

如果你不想使用'call_user_func'你需要将类成员分配给一个本地成员,并用'$ member();' – DarkBee 2014-11-06 16:04:27

回答

2

你可能想在Closure使用__invoke

public function callme() { 
    return $this->cb->__invoke(); 
} 

// ⇒ Hello% 

希望它能帮助。

+0

调用该成员我正在写一个带有变量和'call_user_func ',但是......干杯。 – Mike 2014-11-06 16:09:12

+0

我正在写一个额外的问题,只为你我亲爱的朋友。 – Mike 2014-11-06 16:11:34

+0

这真的是一个新问题,所以,如果你得到一个片刻:http://stackoverflow.com/questions/26784428/invoke-on-callable-array-or-string – Mike 2014-11-06 16:28:24

相关问题