首頁  >  文章  >  後端開發  >  PHP中如何實現回呼?

PHP中如何實現回呼?

青灯夜游
青灯夜游原創
2019-03-13 15:43:415517瀏覽

在PHP中,回呼是一個可呼叫類型的函數物件/參考;回呼(或可呼叫)變數可以用作函數、物件方法和靜態類別方法。實現回調有多種方法,以下這篇文章就來介紹一些,希望對大家有幫助。 【影片教學推薦:PHP教學

PHP中如何實現回呼?

1、標準回呼

範例:使用call_user_func( )函數呼叫一個函數,其中包含的參數是函數名稱。

<?php 
header("content-type:text/html;charset=utf-8");
function text1(){
    echo &#39;这个是text1<br>&#39;;
};
call_user_func(&#39;text1&#39;);
  
?>

輸出:

这个是text1

說明:呼叫了一個call_user_func()函數,然後call_user_func()函數在執行過程中又往回呼叫了 text1()函數。

2、靜態類別方法回呼

範例:使用call_user_func()函數呼叫靜態類別方法,其中的參數是一個包含類別名稱和要呼叫的方法的數組。

<?php 
header("content-type:text/html;charset=utf-8");
class Demo { 
  
    // 用于输出字符串的函数
    static function someFunction() { 
        echo "父级函数输出 <br>"; 
    } 
} 
  
class Article extends Demo { 
  
    // 用于输出字符串的函数 
    static function someFunction() { 
        echo "子级函数输出 <br>"; 
    }    
} 
  
// 静态类方法回调
call_user_func(array(&#39;Article&#39;, &#39;someFunction&#39;)); 
  
call_user_func(&#39;Article::someFunction&#39;); 
  
// 相对静态类方法回调
call_user_func(array(&#39;Article&#39;, &#39;parent::someFunction&#39;)); 
  
?>

輸出:

子级函数输出
子级函数输出
父级函数输出

3、物件方法回呼

範例:使用call_user_func()函數呼叫物件方法,其中參數為包含物件變數和要呼叫方法的字串名稱的陣列。

<?php 
header("content-type:text/html;charset=utf-8");
class Demo { 
  
    // 输出字符串的函数
    static function someFunction() { 
        echo "PHP中文网 <br>"; 
    } 
  
    // 输出字符串的函数
    public function __invoke() { 
        echo "__invoke()函数<br>"; 
    } 
} 
  
// 类对象
$obj = new Demo(); 
  
// 对象方法调用
call_user_func(array($obj, &#39;someFunction&#39;)); 
  
call_user_func($obj); 
  
?>

#輸出:

PHP中文网 
__invoke()函数

4、閉包回呼

範例:使用array_map()函數對閉包函數賦予的有效參數數組進行標準調用或映射閉包函數,可以使閉包函數可調用,其中參數是閉包函數及其有效參數的數組。

<?php 
header("content-type:text/html;charset=utf-8");
// 用于输出<br>
$print_function = function($string) { 
    echo $string."<br>"; 
}; 
  
// 字符串数组 
$string_array = array("PHP", "Python", "MySQL"); 
  
// 可调用闭包
array_map($print_function, $string_array);
?>

輸出:

PHP
Python
MySQL

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是PHP中如何實現回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn