Php call_user_func和call_user_func_array的区别
call_user_func和call_user_func_array是我们可能是在实际项目中经常会用到的两个函数,顾名思义,就是调用用户自定义的函数。
call_user_func(string $function_name,string $argument);
第一个参数的函数的名称,第二个是函数的参数;返回结果是bool类型,调用函数成功返回true,调用失败返回false
Example:
function name($name){
echo '我的名字是:' . $name;
}
call_user_func("name","李四");//输出我的名字是:李四
?>
调用类的内部的函数的时候,第一个参数是数组类型array(类名或者类对象,”函数名”),第二个依然是函数的参数
Example:
class Test
{
public function echoName($name){
echo '我的名字是:' . $name;
}
public function __construct(){
call_user_func(array($this,"echoName"),"张三");
call_user_func(array("Test","echoName"),"张三");
}
}
$file = new Test();
call_user_func(array($file,"echoName"),"张三");
call_user_func(array("Test","echoName"),"张三");
call_user_func_array 函数和call_user_func 很相似,只是使用了数组的传递参数形式,让参数的结构更清晰: 返回结果是bool类型,调用函数成功返回true,调用失败返回false
Example:
function name($name){
echo '我的名字是:' . $name;
}
call_user_func_array("name",array("李四"));//输出我的名字是:李四
调用类的内部方法和call_user_func 函数的调用方式一样,都是使用了数组的形式来调用。
Example:
class Test
{
public function echoName($name){
echo '我的名字是:' . $name;
}
public function __construct(){
call_user_func_array(array($this,"echoName"),array("张三"));
call_user_func_array(array("Test","echoName"),array("张三"));
}
}
header("content-type:text/html;charset=utf-8");
$file = new Test();
call_user_func_array(array($file,"echoName"), array("张三"));
call_user_func_array(array("Test","echoName"), array("张三"));