是否可以使用php直接调用存储在类的成员变量中的回调?目前我正在使用一种解决方法,我暂时将回调存储到本地var。
class CB {
private $cb;
public function __construct($cb) {
$this->cb = $cb;
}
public function call() {
$this->cb(); // does not work
$cb = $this->cb;
$cb(); // does work
}
}
php抱怨$this->cb()
不是有效的方法,即不存在。
答案 0 :(得分:6)
在php7中你可以这样称呼它:
class CB {
/** @var callable */
private $cb;
public function __construct(callable $cb) {
$this->cb = $cb;
}
public function call() {
($this->cb)();
}
}
答案 1 :(得分:5)
您需要使用call_user_func
:
class CB {
private $cb;
public function __construct($cb) {
$this->cb = $cb;
}
public function call() {
call_user_func($this->cb, 'hi');
}
}
$cb = new CB(function($param) { echo $param; });
$cb->call(); // echoes 'hi'