PHP 函数call_user_func和call_user_func_array用法详解


Posted in PHP onMarch 02, 2014

call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法:
第一种是调用孤独的函数:

<?php
function funa($b,$c)
{
    echo $b;
    echo $c;
}
call_user_func('funa', "111","222");
call_user_func('funa', "333","444");
//显示 111 222 333 444
//大家有没有发现,这个用法有点像javascript中的call方法,嘿嘿
?>

第二种是调用类内部的函数:
<?php
class a {
    function b()
    {
        $args = func_get_args();
        $num = func_num_args();
        print_r($args);
        echo $num;
    }
}
call_user_func(array("a", "b"),"111","222");
?>

上面这个例子,自己运行一下看看结果是什么吧~嘿嘿~提示一下func_get_args()函数是获取传入到函数中的参数,返回一个数组,func_num_args()函数获取传入函数中的参数的个数。

下面再来看看call_user_func_array函数
这个函数也是当需要动态调用函数时用到的,它的用法和call_user_func函数比较像,只是参数传入的是数组。

<?php
function a($b, $c)
{
    echo $b;
    echo $c; 
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>

call_user_func_array函数也可以调用类内部的方法的

<?php
Class ClassA
{
    function bc($b, $c) {
        $bc = $b + $c;
        echo $bc;
    }
}
call_user_func_array(array(‘ClassA','bc'), array(“111″, “222″));
//显示 333
?>

下面再看一个动态调用函数的例子:
<?php
function otest1 ($a)
{
     echo( '一个参数' );
}function otest2 ( $a, $b)
{
    echo( '二个参数' );
}
function otest3 ( $a ,$b,$c)
{
    echo( '三个啦' );
}
function otest (){
    $args = func_get_args();
    $num = func_num_args();
    call_user_func_array( 'otest'.$num, $args  );
}
otest("11");
otest("11","22");
otest("11","22","33");
?>

PHP 相关文章推荐
增加反向链接的101个方法 站长推荐
Jan 31 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
php实现mysql数据库备份类
Mar 20 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
用PHP代码给图片加水印
Jul 01 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
php登录超时检测功能实例详解
Mar 21 PHP
Yii redis集合的基本使用教程
Jun 14 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 #PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
php递归方法实现无限分类实例代码
Feb 28 #PHP
PHP中常用的转义函数
Feb 28 #PHP
PHP中鲜为人知的10个函数
Feb 28 #PHP
php中调用其他系统http接口的方法说明
Feb 28 #PHP
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python连接oracle数据库实例
2014/10/17 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python多任务及返回值的处理方法
2019/01/22 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
如何处理简单的PHP错误
2015/10/14 面试题
房地产销售经理岗位职责
2014/01/01 职场文书
办公室人员先进事迹
2014/01/27 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
无工作证明怎么写
2015/06/15 职场文书
在校生证明
2015/06/17 职场文书
晚会开幕词范文
2016/03/04 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
redis缓存存储Session原理机制
2021/11/20 Redis
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers