如何动态调用PHP方法并在不在数组中传递多个变量


How to dynamically call PHP method and pass multiple variables not in an array?

我希望能够调用php函数,但前提是输入的元素数量与函数接受的元素数量匹配,如果匹配,我希望以1乘1的方式传递它们,而不是作为数组。

目前,我有以下代码可以完成这项工作,但很混乱。

call_user_func($functionname, $vars);

当我有一个函数需要4个元素的数组,但只传递了3个时,这就遇到了问题。必须检查并确保所有的var都存在,这使得编写函数有点混乱。我有一个基于反思的更好的解决方案。如何在php中动态检查函数的参数数量,但我还差最后一步。如果参数的数量与函数中的参数数量相匹配,我可以调用该方法,但我不知道如何正确调用该方法。我有一组变量。我需要将这些传递到函数中,以便可以执行以下操作。

function foo($var1, $var2, $var3)
{
    //I know all 3 vars exist and dont need to verify first
}
if(count($arrayof3elements) == get_method_var_count("foo") {
    dynamically_call_method("foo", $arrayof3elements);
}

不使用call_user_func,而是使用call_user_func_array-这允许您传递参数数组,但将它们作为单独的东西传递给方法。

function x($foo, $bar) {
    echo $foo . $bar;
}
call_user_func_array('x', ['abc', 'def']); // prints abcdef