PHP:function:允许不超过X个参数

时间:2010-10-04 16:17:13

标签: php

我有一个这样的课(这是一个抽象的例子):

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
    }

有更好的方法吗?

2 个答案:

答案 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