溫馨提示×

溫馨提示×

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

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

PHP中回調(diào)函數(shù)的概念是什么

發(fā)布時間:2021-06-23 15:49:23 來源:億速云 閱讀:158 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)PHP中回調(diào)函數(shù)的概念是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、回調(diào)函數(shù)的概念

先看一下C語言里的回調(diào)函數(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)函數(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ù)的實現(xiàn)

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ù)來確定的。

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

<?php
//普通函數(shù)
function f1($arg1,$arg2)
{
  echo __FUNCTION__.'exec,the args is:'.$arg1.' '.$arg2;
  echo "<br/>";
}
//通過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."<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/>";
  }
}
//調(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'));

運行結(jié)果:

f1exec,the args is:han wen
f1exec,the args is:han wen
the arg is:han!
my name is:wen
A::show1 exec,the args is:han! wen
A::show2 of class A exec, the args is:argument1 argument2

上述就是小編為大家分享的PHP中回調(diào)函數(shù)的概念是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI