首頁 >後端開發 >php教程 >PHP的回呼函數使用詳解

PHP的回呼函數使用詳解

php中世界最好的语言
php中世界最好的语言原創
2018-04-11 10:05:491975瀏覽

這次帶給大家PHP的回呼函數使用詳解,PHP回呼函數使用的注意事項有哪些,以下就是實戰案例,一起來看一下。

# 本文實例講述了PHP回呼函數概念與用法。分享給大家參考,具體如下:

# 一、回呼函數的概念

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

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

二、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.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$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'));

運行結果:

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中文網其它相關文章!

推薦閱讀:

PHP中應該怎麼使用file_put_contents函數

##PHP如何操作phar檔

#PHP怎麼解最長公共子字串

#PHP有哪些產生隨機數的方法

以上是PHP的回呼函數使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn