call_user_func_array不接受意外的函数参数

时间:2015-03-07 16:21:27

标签: php function argument-passing php-5.5

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

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

我是否可以强制执行错误,例如“此函数不应接受参数”。

3 个答案:

答案 0 :(得分:1)

完全可以向用户定义的函数发送比函数签名定义的更多参数。这是因为您可以在函数中使用其他代码来处理这些代码,或者只是忽略它们。

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

使用类似上面的内容来测试已传递给函数的参数

答案 1 :(得分:1)

您可以使用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

答案 2 :(得分:0)

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