解析php中如何调用用户自定义函数


Posted in PHP onAugust 06, 2013

先放上来别人的例子吧:
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:   

function a($b,$c)    
{    
echo $b;    
echo $c;    
}    
call_user_func('a', "111","222");    
call_user_func('a', "333","444");    
//显示 111 222 333 444    
?>   
  
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:   
class a {    
function b($c)    
{    
echo $c;    
}    
}    
call_user_func(array("a", "b"),"111");    
//显示 111    
?>   
  
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:   
function a($b, $c)    
{    
echo $b;    
echo $c;    }    
call_user_func_array('a', array("111", "222"));    
//显示 111 222    
?>   
  
call_user_func_array函数也可以调用类内部的方法的   
Class ClassA    
{    function bc($b, $c) {    
     $bc = $b + $c;    
echo $bc;    
}    
}    
call_user_func_array(array('ClassA','bc'), array("111", "222"));    
//显示 333    
?>   
 
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:   
function a($b)    
{    
$b++;    
}    
$c = 0;    
call_user_func('a', $c);    
echo $c;//显示 1    
call_user_func_array('a', array($c));    
echo $c;//显示 2  

另:call_user_func函数和call_user_func_array函数都支持引用。
<?php
function increment(&$var)
{
    $var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a; // 0
call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 1
?>
PHP 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
php模板函数 正则实现代码
Oct 15 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
php精度计算的问题解析
Jun 21 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
使用php实现截取指定长度
Aug 06 #PHP
php 如何获取数组第一个值
Aug 06 #PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 #PHP
php实现统计邮件大小的方法
Aug 06 #PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 #PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 #PHP
深入解析PHP中逗号与点号的区别
Aug 05 #PHP
You might like
PHP自动选择 连接本地还是远程数据库
2010/12/02 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
基于javascript 闭包基础分享
2013/07/10 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
Python面向对象class类属性及子类用法分析
2018/02/02 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python对日志进行处理的实例代码
2018/10/06 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
2014年生产部工作总结
2014/12/17 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
高中班长竞选稿
2015/11/20 职场文书
python编写函数注意事项总结
2021/03/29 Python
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python