2015-09-03 40 views
2

如何在其他類方法中使用類函數作爲參數?如何在其他類方法中使用類函數作爲參數

例如,我有兩個類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); 

我怎樣才能做到這一點是否正確?

回答

1
$callableArray = array(new B, 'do'); 
if(is_callable($callableArray)) { 
    $callableArray(); 
} 
1

您需要將callback參數作爲數組傳遞,以指示要執行的類和方法。另外,方法名稱是一個保留字,你不能使用它,你有幾個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')); 
相關問題