首页 > 编程 > PHP > 正文

浅谈PHP中的call_user_func()与call_user_func_array()函数

2020-03-22 17:39:55
字体:
来源:转载
供稿:网友
本篇文章主要是对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);//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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表