如何在其他类方法中使用类函数作为参数

时间:2015-09-03 09:51:17

标签: php

如何在其他类方法中使用类函数作为参数?

例如,我有两个类AB

我想使用类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);

我该如何正确地做到这一点?

2 个答案:

答案 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'));