从控制器传递方法作为回调到另一个

时间:2014-10-06 18:04:23

标签: php yii

我有这样的事情:

public function generateAudio(){

$sourceProcessor = new Sourceprocessor($_SESSION['input_file']);
$sourceProcessor->extractAudio();

}

public function checkProgress($percent){
  //do something with a percents
}  

并且在SourceProcessor我有这样的事情:

public function extractAudio($callback=NULL, $folder=NULL){

   if(is_callable($callback)){
       $callback($percentage);
   }

}

我试图传递像

这样的方法
$sourceProcessor->extractAudio(array($this,'checkProgress');
$sourceProcessor->extractAudio(array($this->checkProgress());

但似乎没有任何效果。任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:4)

像这样调用你的方法:

$sourceProcessor->extractAudio(array($this,'checkProgress'));

extractAudio调用这样的回调:

call_user_func($callback, $percent);

有关详细信息,请参阅call_user_funccallable的手册条目