我有一个这样的课(这是一个抽象的例子):
class Example(){
function test($param1,$param2,$param3=NULL){ //param3 is optional
//stuff
}
}
此函数是动态调用的(来自URL,/ example / test / a / b /将调用Example :: Test(a,b))
if(is_callable(array($class, $funcname)))
call_user_func_array(array($class, $funcname),$params);
/ example / test /是不允许的,因为缺少参数(将返回404)
/ example / test / a /也是不允许的
允许使用/ example / test / a / b /,因为$ param3是可选的
允许/ example / test / a / b / c /
BUT:
/ example / test / a / b / c / d /也将调用该函数,因为PHP只是忽略了第4个参数。
由于动态调用func,脚本在调用函数之前不知道允许多少个参数。但是如果参数太多,我需要脚本返回404错误。我找不到找到最大值的方法。在实际调用函数之前输出的参数量。
这个有效:
function test($param1,$param2,$param3=NULL,$error=NULL){ //param3 is optional;
if(isset($error))$this->getErrorController()->notFoundHandler(); //will throw a 404 if $error is set and stop the script.
//stuff
}
有更好的方法吗?
答案 0 :(得分:4)
您可以查看函数内func_num_args()的返回值。
答案 1 :(得分:1)
我找到了我正在寻找的东西。它是ReflectorClass(PHP5)。
最大参数数量:
http://www.php.net/manual/en/reflectionfunctionabstract.getnumberofparameters.php
最小参数数量:
http://www.php.net/manual/en/reflectionfunctionabstract.getnumberofrequiredparameters.php