回調是一個可調用類型的函數對象/引用;回

在PHP中,回調是一個可調用類型的函數對象/引用;回調(或可調用)變量可以用作函數、對象方法和靜態類方法。實現回調有多種方法,下面本篇文章就來介紹一些,希望對大家有所幫助。【視頻教程推薦:PHP教程】



1、標準回調


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


1

2

3

4

5

6

7

8

<?php 

header("content-type:text/html;charset=utf-8");

function text1(){

    echo '這個是text1<br>';

};

call_user_func('text1');

   

?>

輸出:


1

這個是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('Article', 'someFunction')); 

   

call_user_func('Article::someFunction'); 

   

// 相對靜態類方法回調

call_user_func(array('Article', 'parent::someFunction')); 

   

?>

輸出:

子級函數輸出

子級函數輸出

父級函數輸出

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, 'someFunction')); 

   

call_user_func($obj); 

   

?>

輸出:


1

2

PHP中文網 

__invoke()函數

4、閉包回調


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

<?php 

header("content-type:text/html;charset=utf-8");

// 用於輸出<br>

$print_function = function($string) { 

    echo $string."<br>"; 

}; html中文網

   

// 字符串數組 

$string_array = array("PHP", "Python", "MySQL"); 

   

// 可調用閉包

array_map($print_function, $string_array);

?>

輸出:

PHP

Python

MySQL

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章