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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
PHP的拦截器实例分析
Nov 03 PHP
php以post形式发送xml的方法
Nov 04 PHP
浅谈json_encode用法
Mar 05 PHP
crontab无法执行php的解决方法
Jan 25 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JS 控件事件小结
2012/10/31 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
python调用java的Webservice示例
2014/03/10 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
python字符串中的单双引
2017/02/16 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
应届行政管理专业个人自我评价
2013/12/28 职场文书
接待员岗位责任制
2014/02/10 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
开天辟地观后感
2015/06/09 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle