2013-10-16 49 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);