call_user_func_array不接受意外的函数参数


call_user_func_array to not accept unexpected function parameters

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

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

我可以让它强制一个错误,比如"这个函数不应该接受参数"。

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

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);

::信息

查看ReflectionFunction类。使用它,您可以检测函数期望的参数数量,并避免在不匹配时调用它。