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手册

点赞(4) 联系站长
返回
顶部