本篇文章主如果对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视频教程
以上就是浅谈PHP中的call_user_func()与call_user_func_array()函数的细致内容,更多请关注ki4网别的相干文章!