回调函数
Callback(即call then back)被主函数调用后执行其他操作,然后再返回主函数的函数,称之这个被调用的函数为主函数的回调函数。
通俗的来说,回调函数是一个我们定义的函数,但是不是我们直接来调用,而是通过另一个函数来调用,这个函数通过接收回调函数的名字
和参数
来实现对它的调用。
就是把函数作为参数传入进另一个函数中使用,被作为参数的函数称之为调用者的回调函数;
PHP的回调函数其实和C、Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数;回调函数执行完毕之后,再回到主线程处理接下来的流程;
php调用回调函数,不像c以及java那样直接使用
函数名
作为函数参数,而是使用函数对应的字符串名称
执行
作用
作用:使用回调函数是为了可以将一段自己定义的功能传到函数内部使用
回调函数的形式
1、全局函数
function callback($val){
//CODE...
}
function main($callback, $val){
$callback($val);
}
main('callback', []); # 这里是函数的字符串名称
函数callbak叫做函数main的回调函数
如:
call_user_func_array('callback'); # 这里是函数的字符串名称
2、匿名函数(闭包函数)
$closure = function ($var) {
//CODE...
};
call_user_func_array($closure, []); # 这里和全局函数不同的是,这里是匿名函数的变量
或者直接写,省去变量赋值
call_user_func_array(function(){
//CODE...
}, []);
3、对象方法的数组调用形式
class T {
public function bar($val) {
};
private function foo($val) {
};
// 类中使用回调
public function main() {
// 回调私有方法
call_user_func_array([$this, 'foo'], [])
};
};
//类外使用回调
call_user_func_array([new T, 'bar'], []);
类外 使用 new实例,类中 使用 $this
4、类静态方法的数组调用形式
class T {
public static function foo ($val) {
}
}
//数组调用形式
call_user_func_array(['T', 'foo'], []);
或
//字符串形式
call_user_func_array('T::foo', []);