我有一个不接受参数的函数,即function doSomething(){...}
。
如果我跑,call_user_func_array('doSomething', array('param1' => 'something'));
它不会返回错误。
我是否可以强制执行错误,例如“此函数不应接受参数”。
答案 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课程。使用它,您可以检测函数期望的参数数量,并避免在不匹配时调用它。