call_user_func_array 不接受意外的函数参数

call_user_func_array to not accept unexpected function parameters

我有一个不接受任何参数的函数,即 function doSomething(){...}

如果我 运行,call_user_func_array('doSomething', array('param1' => 'something')); 它不会 return 错误。

我可以让它强制出现错误,例如 "This function should not accept parameters"。

完全有可能向用户定义的函数发送比函数签名定义的更多的参数。那是因为您可以在函数中使用额外的代码来处理这些问题,或者干脆忽略它们。

function doSomething(){
    if (func_num_args() > 0) {
        throw new Exception('Too many arguments');
    }
    ....
}

使用类似于上面的方法来测试已传递给您的函数的参数

您可以使用 func_num_args:

function foo()
{
    $n = func_num_args();
    if ($n > 0) {
        echo "Number of arguments: $n, 0 expected.";
    return;
    }
}

foo(1, 2, 3);

:: Info

查看 ReflectionFunction class。使用它,您可以检测函数需要多少参数并避免在不匹配时调用它。