PHP中的callback类型

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容