您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關PHP中的call_user_func()與call_user_func_array()函數是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
call_user_func:把一個參數作為回調函數調用
用法說明:
call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed
參數說明:
第一個參數$callback作為回調函數,其它參數都是回調函數的參數。
$parameter:傳入回調$callback函數的參數,這里的參數注意不能引用傳遞。
下面簡單例子分別說明了在不同情況下使用call_user_func:
//先引用,后執行 function _call($call){ echo $call++.'<br/>'; echo $call++.'<br/>'; return $call; } $rs = call_user_func('_call',1); var_dump($rs); //結果 //1 //2 //int(3)
先執行,后引用
$arg = 1; call_user_func(function ($call){ echo ++$call.'<br/>'; echo ++$call.'<br/>'; },$arg); //結果為2,3
回調函數不傳值,通過func_get_arg和func_get_args獲取參數
$argOne = 1; $argTwo = 2; call_user_func(function (){ //獲取第幾個參數 $arg = func_get_arg(0); var_dump($arg); echo '<br/>'; //獲取所有的參數,并以數組的形式返回 $args = func_get_args(); var_dump($args); //獲取參數個數 $argNum = func_num_args(); echo "<br/>"; var_dump($argNum); },$argOne,$argTwo); //結果為 int(1) array(2) { [0]=> int(1) [1]=> int(2) } int(2)
調用類方法:
調用類中的靜態方法有兩種形式,而調用public方法第一個參數只能為數組
class Func{ static public function _One(){ $str = "THE CLASS NAME IS".__CLASS__." AND CLASS STATIC METHOD IS ".__METHOD__; $argNum = func_num_args(); if($argNum){ $arg = func_get_arg(0); return $str.' and argument is '.$arg; }else{ return $str; } } public function _Two($num){ return $num ? $num + 1 : $num; } } echo "<br/>"; //調用類的靜態方法 var_dump(call_user_func('Func::_One','one')); echo '<br/>'; var_dump(call_user_func(['Func','_One'])); $num = 4; $o = new Func; //調用類普通方法 $return = call_user_func(array($o,'_Two'),$num); echo '<br/>'; var_dump($return); 結果: string(79) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One and argument is one" string(59) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One" int(5)
調用有命名空間的類時call_user_func的用法與上面的同理
//調用靜態方法 call_user_func(array(__NAMESPACE__.'\StaticDemo','_One'),100); call_user_func('App\StaticDemo::_One',200); //調用public方法 call_user_func(array($obj,'_Two'),2,3,4);
最后:
和call_user_func函數類似的還有call_user_func_array,call_user_func_array的作用和call_user_func的作用一樣,
不同的是call_user_func用回調函數處理字符,而call_user_func_array用回調處理數組,也就是說call_user_func_array的參數二只能為數組。
感謝各位的閱讀!關于PHP中的call_user_func()與call_user_func_array()函數是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。