call_user_func与call_user_func_array
来源:互联网 发布:inpho软件好学吗 编辑:程序博客网 时间:2024/05/29 18:06
call_user_func是PHP的内置函数,该函数允许用户调用直接写的函数并传入一定的参数
call_user_func_array是个很神奇的函数,在你PHP水平成长到一定高度的时候,你就能深刻理解它的意义了。这里我给你举两个适合用call_user_func_array的例子,帮助你理解场景一:参数数目不确定函数的参数是用户传入的,而且参数的数目不确定。如果不用call_user_func_array你会怎么做?一些PHP框架可以将$_GET参数自动映射到方法,就是这样实现的。场景二:用于函数回调回调函数可能是一个普通函数,可能是类方法,也可能是静态方法。如果使用call_user_func_array,你就不用去判断方法的类型。
- 追问
首先感谢你!普通方法和静态方法, 都可以通过 类名::方法名调用啊 ,只不过普通方法貌似很少这么干的?参数不确定 ,php不是有func_get_args()方法可以接受全部的参数数组吗?
- 回答
这是一个设计上的问题。func_get_args是可以实现,但这就要求编写函数的用户有要实现更多的逻辑。
如果你是一个框架的设计者,你要用户自己写func_get_args,自己写参数处理的过程吗?
有时这个函数是来自某个类库的,难道你要修改源码么?
给你一个回调函数的例子,如果不用call_user_func_array要写多少代码?
1234567<?php
function
call_func(callback){
return
call_user_func_array(callback,
array
(1,2));
}
call_func(
array
(
$obj
,
'method'
));
call_func(
array
(
'classname'
,
'method'
));
call_func(
'simple_function'
);
- 提问者评价
膜拜!看来早点看框架底层的东西就好了,多吸收别人的精华代码真是受益匪浅,再次感谢!
0 0
- call_user_func与call_user_func_array
- call_user_func()与call_user_func_array函数
- call_user_func_array与call_user_func区别
- PHP call_user_func与call_user_func_array函数的用法
- call_user_func和call_user_func_array
- call_user_func和call_user_func_array
- call_user_func、call_user_func_array的用法
- call_user_func函数和call_user_func_array函数
- call_user_func函数和call_user_func_array函数
- php之call_user_func();和call_user_func_array();
- PHP 函数之 call_user_func & call_user_func_array
- call_user_func函数和call_user_func_array函数
- PHP 中的call_user_func_array() 和call_user_func()
- call_user_func与call_user_func_array把第一个参数作为回调函数调用
- php函数call_user_func和call_user_func_array详解
- php函数call_user_func和call_user_func_array详解
- php函数call_user_func和call_user_func_array详解
- php函数call_user_func和call_user_func_array详解
- 优秀产品经理指南
- eclipse中svn账户、密码修改
- 程序员技术练级攻略
- Unity3d性能优化代码篇
- 用安卓程序录制音频和视频程序
- call_user_func与call_user_func_array
- 双系统安装 win7
- free内存释放的理解
- Winfrom和控制台中static修饰方法的问题
- Hash思想:映射
- 《基于ORACLE SQL优化》读书笔记-使用SQL PROFILE锁定执行计划
- listview onListItemClick 失效解决方案
- IOS点击return隐藏键盘
- [Leetcode] Sum Root to Leaf Numbers (Java)