2013-10-16 50 views
0

如果我有幾十個參數的函數,可以使用變量名作爲參考嗎?函數參數約定

例如:

public function addUser($user,$employeeno,$streetno,$street,$city,$state, 
     $zip,$mobileno,$officeno,$email,$password,$division,$something, 
     $something_else,$another_thing,$one_more) { 

} 

要添加用戶,這將是一個問題,如果我做這樣的事情:

.... addUser($user = 'hello', $empno = '123456', $streetno = '123', 
      $street = 'Stack Overflow Avenue', $city = 'Stack City', 
      $state = 'SC', $zip = 99999, $mob = '1234567890' // ... and so on 

我試着和它的工作,但有什麼影響我應該知道嗎?在我五年以上的PHP使用經驗中,我從來沒有遇到過由他人開發的示例代碼和系統。如果可靠,這將允許我跟蹤我傳遞函數或方法的信息。

回答

2

沒有問題,你可以有任意多的參數,只要你喜歡。當然,當它們被正確命名時,它會讓你的生活更輕鬆。

當您忘記了訂單,或者更糟糕的是想要修改它時,就會出現問題 - 這將變得很難維護,因爲您需要隨時隨地更改使用該功能的地方。然後在客戶端代碼

class User 
{ 
    protected $username; 

    protected $employeeNumber; 

    protected $streetNumber; 

    public function getUsername(); 

    public function setUsername($username); 

    public function setEmployeeNumber($number); 

} 

您可以但是創建一個User

$user = new User(); 
$user->setUsername($user); 
$user->setEmployeeNumber($employeeno); 
//.... 

,然後在register()函數類型提示。

public function register(User $user) 
{ 
    // Save the users data 
} 

最終的結果是所有的爲用戶數據被封裝與用戶類,所以任何改變將不需要任何進一步的修改到register功能。

0

如果你想繼續使用函數式編碼,你總是可以使用數組。

$data = array("user" => "hello", "employeeno" => 123456, "streetno" => 123, "street" => "Stack Overflow Avenue"); // etc... 
addUser($data); 

或者,如果你想更容易閱讀的版本:

$data['user'] = "hello"; 
$data['employeeno'] = 123456; 
$data['streetno'] = 123; 
$data['street'] = "Stack Overflow Avenue"; 
addUser($data); 

或者清理的第一個版本:

$data = array("user" => "hello", 
"employeeno" => 123456, 
"streetno" => 123, 
"street" => "Stack Overflow Avenue"); // etc... 
addUser($data);