Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 回调存储在类成员中,如何调用?_Php - Fatal编程技术网

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')
绝不是回调。它是一个数组,包含实例和字符串。