比较call_user_func与call_user_func_array vs call_user_method vs call_user_method_array

时间:2016-05-30 06:04:48

标签: php

function HelloFunc($Arg1 , $Arg2 , $Arg3 ){
    echo "Arg1 : " . $Arg1 . "\n";
    echo "Arg2 : " . $Arg2 . "\n";
    echo "Arg3 : " . $Arg3 . "\n";
    return "done";
}

比较输出

echo call_user_func("HelloFunc" , "1" , "2" , "3");


Arg1 : 1
Arg2 : 2
Arg3 : 3
done

echo call_user_func_array("HelloFunc" , "1" , "2" , "3"); 

Warning: call_user_func_array() expects exactly 2 parameters

我的问题是,使用 call_user_func& call_user_func_array

我知道 call_user_method& call_user_method_array 是折旧的,在PHP7中不起作用。并且 call_user_func& call_user_func_array 在较旧的PHP中不起作用。

关联以下内容以使其与大多数php版本兼容

是一个好主意
call_user_method = call_user_func 
call_user_method_array = call_user_func_array

喜欢:

function_exists('call_user_method ') ? call_user_method() : call_user_func ();

function_exists('call_user_method_array ') ? call_user_method_array () : call_user_func_array();

1 个答案:

答案 0 :(得分:3)

  

您可以同时使用call_user_func_arraycall_user_func   取决于您的数据。

对于call_user_func_array,正如名称所述,它应该是一个数组。因此,请使用call_user_func_array('funntion', $arr)

问题echo call_user_func_array("HelloFunc" , array("1" , "2" , "3"));

您的HelloFunc功能如何:

function HelloFunc($arg1, $arg2, $arg3){

}

更多详情:function.call-user-func-array.phpfunction.call-user-func.php