call_user_func_array是个很神奇的函数
在你PHP水平成长到一定高度的时候,你就能深刻理解它的意义了。
这里我给你举两个适合用call_user_func_array的例子,帮助你理解
场景一:参数数目不确定函数的参数是用户传入的,而且参数的数目不确定。如果不用call_user_func_array你会怎么做?
一些PHP框架可以将$_GET参数自动映射到方法,就是这样实现的。
场景二:用于函数回调回调函数可能是一个普通函数,可能是类方法,也可能是静态方法。
如果使用call_user_func_array,你就不用去判断方法的类型。
使用详解:
一、直接调用方法
.代码如下:
function test($a, $b)
{
echo '测试一:'.$a.$b;
}
//调用test方法,array("asp", 'php')对应相应的参数
call_user_func_array('test', array("asp", 'php'));
二、通过类调用类中的方法
.代码如下:
class test2{
function phpSay($a, $b)
{
echo '测试二:'.$a.$b;
}
}
$o = new test2();
//相当于:$o->phpSay('php','你好');
call_user_func_array(array(&$o, 'phpSay'), array('php','你好'));