如何在其他类方法中使用类函数作为参数?
例如,我有两个类A
和B
。
我想使用类B
中的函数作为类A
中的回调。
示例:
class A {
public function run($callback){
call_user_func_array($callback(), [new Event()])
}
class B {
public function do($event){
}
}
$a = new A();
$b = new B();
$a->run($b->do);
我该如何正确地做到这一点?
答案 0 :(得分:1)
$callableArray = array(new B, 'do');
if(is_callable($callableArray)) {
$callableArray();
}
答案 1 :(得分:1)
您需要将callback参数作为数组传递,指示要执行的类和方法。此外, do 方法名称是保留字,您不能使用它,并且您有一些sintax代码错误。这是正确的代码:
class A {
public function run($callback){
call_user_func_array($callback, ['test']);
}
}
class B {
public function dofunc($event){
echo $event;
}
}
$a = new A();
$b = new B();
$a->run(array($b,'dofunc'));