Php 如何检查函数是否可以使用参数调用?

Php 如何检查函数是否可以使用参数调用?,php,Php,我正在使用call\u user\u func\u数组调用函数: call_user_func_array(array($this, 'myFunction'), array('param1', 'param2', 'param3')); 一切正常,除非我不知道函数需要多少参数。 如果函数需要4个参数,它会向我发送一个错误,我想测试是否可以调用该函数(使用一组参数)。 is_callable()不允许参数检查。 编辑:如果调用失败,我需要调用另一个函数,这就是我需要检查的原因 谢谢 解决这个问

我正在使用call\u user\u func\u数组调用函数:

call_user_func_array(array($this, 'myFunction'), array('param1', 'param2', 'param3'));
一切正常,除非我不知道函数需要多少参数。 如果函数需要4个参数,它会向我发送一个错误,我想测试是否可以调用该函数(使用一组参数)。 is_callable()不允许参数检查。 编辑:如果调用失败,我需要调用另一个函数,这就是我需要检查的原因


谢谢

解决这个问题的一种方法是总是使用大量参数调用函数。PHP的设计方式是,您可以根据需要传递任意多个无关参数,多余的参数将被函数定义忽略

请参阅手册输入以查看有关此的图示

编辑:正如用户crescentfresh指出的,这不适用于内置函数,只适用于用户定义的函数。如果试图向内置函数传递过多(或过少)参数,将收到以下警告:

Warning: Wrong parameter count for strpos() in Command line code on line [...]
警告:命令行代码第[…]行的strpos()参数计数错误您可以使用反射获取参数数:

$refl = new ReflectionMethod(get_class($this), 'myFunction');
$numParams = $refl->getNumberOfParameters();


有关更多信息,请参见

Ok,但如果失败,我需要调用另一个函数。我会编辑我的帖子。谢谢对于许多内置功能,它将失败。只有用户空间函数才是php可以原谅wrt多余参数的函数。是的,但问题中的回调是array($this,'myFunction'),这意味着代码正在自己调用一个方法
$numParams = $refl->getNumberOfRequiredParameters();