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 相关文章推荐
php上传、管理照片示例
Oct 09 PHP
PHP 编写大型网站问题集
May 07 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
May 10 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
Yii框架日志操作图文与实例详解
Sep 09 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抓取页面的几种方法详解
2013/06/17 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php简单统计在线人数的方法
2016/05/10 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
js实现数字滚动特效
2019/12/16 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
Python requests模块实例用法
2019/02/11 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
后勤部经理岗位职责
2014/02/23 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
公务员诚信承诺书
2014/05/26 职场文书
创建文明城市标语
2014/06/16 职场文书
学生病假条范文
2015/08/17 职场文书
三年级作文之趣事作文
2019/11/04 职场文书