2011-07-06 131 views
2
public function setSomething($what){ 
    $this->something = $what; 
} 

... 

$obj->setSomething(array('aaa', 'bbb', 'ccc')); 

單數組參數與PHP中的多個參數

public function setSomething(){ 
    $this->something = array_values(func_get_args()); 
} 

... 

$obj->setSomething('aaa', 'bbb', 'ccc'); 

你會用哪種方法,爲什麼?

PS:第二個也可以用於模擬按鍵我想,如果你給了參數名:

$obj->setSomething($key1 = 'aaa', $key = 'bbb', $key = 'ccc'); 
+0

過得好您傳遞給setter的數據? – Dogbert

+0

我的錯誤,糾正它:d – Alex

+0

一般情況下,使用函數簽名傳達你的API給開發者 – Gordon

回答

2

如果多個參數是可選的,我通常只使用一個數組。例如,如果我有報告可以採用公司ID,員工ID或兩者兼而有之。我不會有function report ($CompanyID = null, $EmployeeID = null),我會做function report($array),然後在函數內部,做if (isset($array['company_id']))...

如果你認爲你需要的,因爲你有太多的參數使用數組,這可能是一個跡象,表明該功能太複雜,需要分解。

編輯:請注意,這更是一個籠統的回答,因爲我不知道它如何適用於您的二傳手問題,因爲邏輯上二傳手應該只需要一個參數。在你的情況下,如果你的$this->something需要一個數組,給它一個數組,而不是你必須變成一個數組的參數。