Callback / Callable 類型
在PHP的官方文檔中,經(jīng)承莸樱可以看到偽類型 Callback / Callable , 它就是我們所說的回調(diào)函數(shù).
但是回調(diào)函數(shù)不止可以是簡單函數(shù)昧诱,還可以是對(duì)象的方法,包括靜態(tài)類方法.
下面以call_user_func(),列舉常用的幾種回調(diào)方式:
//定義一個(gè)回調(diào)函數(shù)
function callback_function(){
echo 'funnyphp.cn';
}
//定義一個(gè)對(duì)象回調(diào)方法
class MyClass{
public static function callback_method(){
echo 'funnyphp.cn';
}
}
//調(diào)用方式1:簡單調(diào)用(指明回調(diào)函數(shù)名)
call_user_func('callback_function');
//調(diào)用方式2:靜態(tài)方法調(diào)用
call_user_func(array('MyClass','callback_method'));
call_user_func('MyClass::callback_method'); //php5.2.2以后也可以這樣調(diào)用
//調(diào)用方式3:對(duì)象方法調(diào)用
$obj = new MyClass();
call_user_func(array($obj,'callback_method'));
//如果在對(duì)象內(nèi)部則可使用this關(guān)鍵字
class MyClass {
public function callback_method()
{
call_user_func(array($this, 'callback_method'));
}
public function callback_method()
{
echo 'funny.cn';
}
}
//調(diào)用方法4:相對(duì)靜態(tài)方法調(diào)用
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
//調(diào)用方式5:匿名函數(shù)調(diào)用
$callback_function = function(){
echo 'funnyphp.cn';
}
call_user_func($callback_function);
//也可以直接傳入匿名函數(shù)
call_user_func(function(){
echo 'funnyphp.cn';
});
以上就是回調(diào)類型的幾種常用調(diào)用方式,更多的詳情可以參考php手冊(cè)