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);//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)
調用類方法:
調用類中的靜態方法有兩種形式,而調用html' target='_blank'>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;
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視頻教程
以上就是淺談PHP中的call_user_func()與call_user_func_array()函數的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答