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 经验中,我从未在其他人开发的示例代码和系统中遇到过这种情况。如果它是可靠的,这将允许我跟踪我正在传递函数或方法的信息。

4

2 回答 2

2

没有问题,你当然可以有尽可能多的参数。当然,正确命名它们会使您的生活更轻松。

当您忘记命令时,麻烦就会出现,或者更糟糕的是想要修改它 - 它将变得难以维护,因为您需要在使用该功能的任何地方进行更改。

但是,您可以创建一个User类:

class User
{
  protected $username;

  protected $employeeNumber;

  protected $streetNumber;

  public function getUsername();

  public function setUsername($username);

  public function setEmployeeNumber($number);

}

然后在客户端代码中:

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

register()然后在函数上输入提示。

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

最终结果是用户的所有数据都封装在用户类中,因此任何更改都不需要对register函数进行任何进一步的修改。

于 2013-10-16T12:35:25.013 回答
0

If you want to keep on using functional coding, you could always use arrays.

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

Or if you want easier to read version:

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

Or clean up the first version:

$data = array("user" => "hello", 
"employeeno" => 123456, 
"streetno" => 123, 
"street" => "Stack Overflow Avenue"); // etc...
addUser($data);
于 2013-10-16T12:40:26.830 回答