各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

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

管理员 2023-09-05
PHP
119

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

内容导读

收集整理的这篇技术教程文章主要介绍了浅谈PHP中的call_user_func()与call_user_func_array()函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2518字,纯文字阅读大概需要4分钟

内容图文

本篇文章主要是对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('AppStaticDemo::_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()函数的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的浅谈PHP中的call_user_func()与call_user_func_array()函数全部内容,希望文章能够帮你解决浅谈PHP中的call_user_func()与call_user_func_array()函数所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部