首頁 > 後端開發 > php教程 > 程式碼分析php中的回調函數

程式碼分析php中的回調函數

烟雨青岚
發布: 2023-04-08 20:26:01
轉載
2334 人瀏覽過

程式碼分析php中的回調函數

程式碼分析php中的回呼函數

#一、回呼函數的概念

       先來看C語言裡的回呼函數:回呼函數就是一個透過函數指標呼叫的函數。如果你把函數的指標(位址)當作參數傳遞給另一個函數,當這個指標被用來呼叫所指向的函數時,我們就說這是回呼函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。

       其他語言裡的回呼函數的概念與之相似,只不過各種語言裡回呼函數的實現機制不一樣,通俗的來說,回調函數是一個我們定義的函數,但是不是我們直接來調用,而是透過另一個函數來調用,這個函數透過接收回調函數的名字和參數來實現對它的調用。

二、php中回呼函數

       php提供了兩個內建函數call_user_func() call_user_func_array()提供對回呼函數的支援。

       這兩個函數的差異是call_user_func_array是以陣列的形式接收回呼函數的參數的,看它的原型就知道了:mixed call_user_func_array ( callable $callback ,array$mmix_arr_arr ),它只有兩個參數;而call_user_func($callback,參數1,參數2,…)的參數個數根據回呼函數的參數來決定的

三、回呼函數的實作

       如何實作腳本中全域函數、類別中未使用$this的非靜態方法、類別中使用$this的非靜態方法(需要傳入物件)、類別中靜態方法的回呼呢,以下是測試通過的程式碼。

<?php   
        //普通函数  
        function f1($arg1,$arg2)  
        {  
            echo __FUNCTION__.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2;  
            echo "<br/>";  
        }  
          
        //通过call_user_func调用函数f1  
        call_user_func(&#39;f1&#39;,&#39;han&#39;,&#39;wen&#39;);  
      
            //通过call_user_func_array调用函数  
        call_user_func_array(&#39;f1&#39;,array(&#39;han&#39;,&#39;wen&#39;));  
        class A  
        {  
            public $name;  
      
            function show($arg1)  
            {  
                echo &#39;the arg is:&#39;.$arg1."<br/>";  
                echo &#39;my name is:&#39;.$this->name;  
                echo "<br/>";  
            }  
            function show1($arg1,$arg2)  
            {  
                echo __METHOD__.&#39; exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";  
            }  
            public static function show2($arg1,$arg2)  
            {  
                echo __METHOD__.&#39; of class A exec, the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";  
            }  
      
        }  
        //调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员  
        $a = new A;  
        $a->name = &#39;wen&#39;;         
        call_user_func_array(array($a,&#39;show&#39;,),array(&#39;han!&#39;));
        
        //调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this
        call_user_func_array(array(&#39;A&#39;,&#39;show1&#39;,),array(&#39;han!&#39;,&#39;wen&#39;));  
 
        //调用类中静态成员函数
        call_user_func_array(array(&#39;A&#39;,&#39;show2&#39;),array(&#39;argument1&#39;,&#39;argument2&#39;));
登入後複製

感謝大家的閱讀,希望大家能收益良多。

本文轉載自:https://blog.csdn.net/u010544319/article/details/9186323

推薦教學:《PHP教學

以上是程式碼分析php中的回調函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板