call_user_func与call_user_func_array
这两个函数的作用是一样的,都是通过函数名(或方法名)来调用函数(或方法),并传入参数的,只是用法略有差别。
call_user_func
传参的时候用的是一个一个的字符串,用,
来分割,也可以用...$arg
这种语法结构来用。call_user_func_array
传参的时候用的是一个数组。
请看代码:
function aa($value='')
{
echo "aa: ".$value;
}
call_user_func('aa','123');
echo "<br>";
call_user_func_array('aa',['123']);
echo "<br>";
class TestClass
{
static public function testAa($value='',$value2='')
{
echo "testAa: ".$value.','.$value2;
}
static private function testBb($value='')
{
echo "testBb: ".$value.','.$value2;
}
}
call_user_func(['TestClass','testAa'] , '123','789');
echo "<br>";
call_user_func_array(['TestClass','testAa'] , ['123','789']);
echo "<br>";
call_user_func(function($data){
echo 'closures: '.$data;
},'aaaa');
echo "<br>";
执行结果是这样:
aa: 123
aa: 123
testAa: 123,789
testAa: 123,789
closures: aaaa