我正在用call_user_func_array调用一个函数:
call_user_func_array(array($this, 'myFunction'), array('param1', 'param2', 'param3'));
除非我不知道函数需要多少参数,否则一切都很好。 如果该函数需要4个参数,它会向我发送一个错误,我想测试是否可以调用该函数(带有一个参数数组)。 is_callable()不允许参数检查。 编辑:如果调用失败,我需要调用另一个函数,这就是我需要检查的原因。
谢谢!
答案 0 :(得分:8)
您可以使用反射来获取参数数量:
$refl = new ReflectionMethod(get_class($this), 'myFunction');
$numParams = $refl->getNumberOfParameters();
或
$numParams = $refl->getNumberOfRequiredParameters();
有关更多信息,请参阅here
答案 1 :(得分:1)
解决这个问题的一种方法是始终使用 lot 参数调用该函数。 PHP的设计方式使您可以根据需要传递尽可能多的无关参数,而多余的参数只会被函数定义忽略。
请参阅func_get_args()
的手动输入,以查看有关此内容的插图。
编辑:正如用户crescentfresh指出的那样,这不适用于内置函数,只适用于用户定义的函数。如果您尝试将太多(或很少)参数传递给内置函数,您将收到以下警告:
Warning: Wrong parameter count for strpos() in Command line code on line [...]