Php 回调存储在类成员中,如何调用?
考虑以下类别:Php 回调存储在类成员中,如何调用?,php,Php,考虑以下类别: class Callbackhandler() { private $cb; public function __construct(callable $cb) { $this->cb = $cb; } public function callme() { return $this->cb(); } } 照常这么说: $callback = function() { return "Hell
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();
生成对未定义方法的调用
错误,因为字段cb
不是方法。如何在不使用call\u user\u func()
的情况下从类内部正确调用回调?您可能希望在闭包上使用\u invoke
:
public function callme() {
return $this->cb->__invoke();
}
// ⇒ Hello%
希望有帮助。如果您不想使用call_user\u func
您需要将类成员分配给本地成员,并使用$member()调用该成员代码>我正在编写一个带有变量和调用用户函数的解决方案,但这。。。干杯。我正在为你写一个附加的问题,我亲爱的朋友。这真的是一个新问题,所以,如果你有时间的话:这只在可调用是闭包时有效,而不是像数组($instance,'methodName')这样的回调。
。是的。请参阅,以了解我可以为这些回调做些什么。实际上,array($instance,'methodName')
绝不是回调。它是一个数组,包含实例和字符串。