新聞中心
一、回調(diào)函數(shù)的概念
創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供雅安機房托管、成都服務(wù)器、成都主機托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價的產(chǎn)品以及開放、透明、穩(wěn)定、高性價比的服務(wù),資深網(wǎng)絡(luò)工程師在機房提供7*24小時標準級技術(shù)保障。
回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進行響應(yīng)。
回調(diào)方法 是 任何一個 被 以該回調(diào)方法為其第一個參數(shù) 的 其它方法 調(diào)用 的方法。很多時候,回調(diào)是一個當(dāng)某些事件發(fā)生時被調(diào)用的方法。
其他語言里的回調(diào)函數(shù)的概念與之相似,只不過各種語言里回調(diào)函數(shù)的實現(xiàn)機制不一樣,通俗的來說,回調(diào)函數(shù)是一個我們定義的函數(shù),但是不是我們直接來調(diào)用,而是通過另一個函數(shù)來調(diào)用,這個函數(shù)通過接收回調(diào)函數(shù)的名字和參數(shù)來實現(xiàn)對它的調(diào)用。
二、php中的回調(diào)函數(shù)
php提供了兩個內(nèi)置函數(shù)call_user_func()和call_user_func_array()提供對回調(diào)函數(shù)的支持。
這兩個函數(shù)的區(qū)別是call_user_func_array是以數(shù)組的形式接收回調(diào)函數(shù)的參數(shù)的,看它的原型就知道了:mixed call_user_func_array ( callable $callback ,array$param_arr ),它只有兩個參數(shù);而call_user_func($callback,參數(shù)1,參數(shù)2,…)的參數(shù)個數(shù)根據(jù)回調(diào)函數(shù)的參數(shù)來確定的。
三、回調(diào)函數(shù)的實現(xiàn)
如何實現(xiàn)對腳本中全局函數(shù)、類中未使用$this的非靜態(tài)方法、類中使用$this的非靜態(tài)方法(需要傳入對象)、類中靜態(tài)方法的回調(diào)呢,下面是測試通過的代碼。
"; } //通過call_user_func調(diào)用函數(shù)f1 call_user_func('f1','han','wen'); //通過call_user_func_array調(diào)用函數(shù) call_user_func_array('f1',array('han','wen')); class A { public $name; function show($arg1) { echo 'the arg is:'.$arg1."
"; echo 'my name is:'.$this->name; echo "
"; } function show1($arg1,$arg2) { echo __METHOD__.' exec,the args is:'.$arg1.' '.$arg2."
"; } public static function show2($arg1,$arg2) { echo __METHOD__.' of class A exec, the args is:'.$arg1.' '.$arg2."
"; } } //調(diào)用類中非靜態(tài)成員函數(shù),該成員函數(shù)中有$this調(diào)用了對象中的成員 $a = new A; $a->name = 'wen'; call_user_func_array(array($a,'show',),array('han!')); //調(diào)用類中非靜態(tài)成員函數(shù),沒有對象被創(chuàng)建,該成員函數(shù)中不能有$this call_user_func_array(array('A','show1',),array('han!','wen')); //調(diào)用類中靜態(tài)成員函數(shù) call_user_func_array(array('A','show2'),array('argument1','argument2'));
以上就是代碼分析php中的回調(diào)函數(shù)的詳細內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
文章題目:php中回調(diào)函數(shù)的介紹和使用
分享地址:http://ef60e0e.cn/article/jciipc.html