2010-10-04 30 views
1

我有這樣一類(這是一個抽象的示例):PHP:功能:允許不大於x的參數

class Example(){ 
    function test($param1,$param2,$param3=NULL){ //param3 is optional 
     //stuff 
    } 
} 

該功能被稱爲動態(從URL,/示例/測試/一個/ b /將調用實施例::測試(A,b))

if(is_callable(array($class, $funcname))) 
    call_user_func_array(array($class, $funcname),$params); 

/示例/測試/是不允許的,因爲缺少的參數的,(將返回404)

/示例/測試/一個/也是不允許的

/示例/測試/ A/B /被允許,因爲$參數3是可選

/示例/測試/ A/B/C /被允許

BUT:

/示例/測試/ a/b/c/d /也會調用該函數,因爲PHP只是忽略了第四個參數。

由於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

Eliasdx,請給予好評和接受的答案。這使得人們更有可能提供幫助。 – webbiedave 2010-10-04 17:33:13

回答

4

您可以在函數中檢查返回值func_num_args()

+0

英文URL:http://php.net/manual/en/function.func-num-args.php – chigley 2010-10-04 16:24:12

+0

哎呦,修正了,謝謝 – greg0ire 2010-10-04 16:39:33