Callback / Callable 类型
在PHP的官方文档中,经常可以看到伪类型 Callback / Callable , 它就是我们所说的回调函数.
但是回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法.
下面以call_user_func(),列举常用的几种回调方式:
//定义一个回调函数
function callback_function(){
echo 'funnyphp.cn';
}
//定义一个对象回调方法
class MyClass{
public static function callback_method(){
echo 'funnyphp.cn';
}
}
//调用方式1:简单调用(指明回调函数名)
call_user_func('callback_function');
//调用方式2:静态方法调用
call_user_func(array('MyClass','callback_method'));
call_user_func('MyClass::callback_method'); //php5.2.2以后也可以这样调用
//调用方式3:对象方法调用
$obj = new MyClass();
call_user_func(array($obj,'callback_method'));
//如果在对象内部则可使用this关键字
class MyClass {
public function callback_method()
{
call_user_func(array($this, 'callback_method'));
}
public function callback_method()
{
echo 'funny.cn';
}
}
//调用方法4:相对静态方法调用
class A {
public static function domain() {
echo "www.funnyphp.cn";
}
}
class B extends A {
public static function domain() {
echo "funnyphp.cn";
}
}
call_user_func(array('B', 'parent::domain')); // www.funnyphp.cn
//调用方式5:匿名函数调用
$callback_function = function(){
echo 'funnyphp.cn';
}
call_user_func($callback_function);
//也可以直接传入匿名函数
call_user_func(function(){
echo 'funnyphp.cn';
});
以上就是回调类型的几种常用调用方式,更多的详情可以参考php手册
网友评论