溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中回調函數的介紹和使用

發布時間:2020-06-11 13:58:35 來源:億速云 閱讀:143 作者:元一 欄目:編程語言

一、回調函數的概念

回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數?;卣{函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用于對該事件或條件進行響應。
回調方法 是 任何一個 被 以該回調方法為其第一個參數 的 其它方法 調用 的方法。很多時候,回調是一個當某些事件發生時被調用的方法。

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

二、php中回調函數

php提供了兩個內置函數call_user_func()call_user_func_array()提供對回調函數的支持。

這兩個函數的區別是call_user_func_array是以數組的形式接收回調函數的參數的,看它的原型就知道了:mixed call_user_func_array ( callable $callback ,array$param_arr ),它只有兩個參數;而call_user_func($callback,參數1,參數2,…)的參數個數根據回調函數的參數來確定的。

三、回調函數的實現

如何實現對腳本中全局函數、類中未使用$this的非靜態方法、類中使用$this的非靜態方法(需要傳入對象)、類中靜態方法的回調呢,下面是測試通過的代碼。

<?php   
        //普通函數  
        function f1($arg1,$arg2)  
        {  
            echo __FUNCTION__.'exec,the args is:'.$arg1.' '.$arg2;  
            echo "<br/>";  
        }  
          
        //通過call_user_func調用函數f1  
        call_user_func('f1','han','wen');  
      
            //通過call_user_func_array調用函數  
        call_user_func_array('f1',array('han','wen'));  
        class A  
        {  
            public $name;  
      
            function show($arg1)  
            {  
                echo 'the arg is:'.$arg1."<br/>";  
                echo 'my name is:'.$this->name;  
                echo "<br/>";  
            }  
            function show1($arg1,$arg2)  
            {  
                echo __METHOD__.' exec,the args is:'.$arg1.' '.$arg2."<br/>";  
            }  
            public static function show2($arg1,$arg2)  
            {  
                echo __METHOD__.' of class A exec, the args is:'.$arg1.' '.$arg2."<br/>";  
            }  
      
        }  
        //調用類中非靜態成員函數,該成員函數中有$this調用了對象中的成員  
        $a = new A;  
        $a->name = 'wen';         
        call_user_func_array(array($a,'show',),array('han!'));
        
        //調用類中非靜態成員函數,沒有對象被創建,該成員函數中不能有$this
        call_user_func_array(array('A','show1',),array('han!','wen'));  
 
        //調用類中靜態成員函數
        call_user_func_array(array('A','show2'),array('argument1','argument2'));

以上就是代碼分析php中的回調函數的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女