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。使用它,您可以检测函数需要多少参数并避免在不匹配时调用它。
我有一个不接受任何参数的函数,即 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。使用它,您可以检测函数需要多少参数并避免在不匹配时调用它。