首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数参数约定

函数参数约定
EN

Stack Overflow用户
提问于 2013-10-16 12:23:26
回答 2查看 30关注 0票数 0

如果我有一个有几十个参数的函数,可以使用变量名作为向导吗?

例如:

代码语言:javascript
运行
复制
public function addUser($user,$employeeno,$streetno,$street,$city,$state,
        $zip,$mobileno,$officeno,$email,$password,$division,$something,
        $something_else,$another_thing,$one_more) {

}

要添加一个用户,如果我这样做会不会有问题:

代码语言:javascript
运行
复制
.... addUser($user = 'hello', $empno = '123456', $streetno = '123',
             $street = 'Stack Overflow Avenue', $city = 'Stack City',
             $state = 'SC', $zip = 99999, $mob = '1234567890' // ... and so on

我试过了,但是有什么我应该知道的吗?在我五年多的经验中,我从未在其他人开发的示例代码和系统中遇到过这种情况。如果它是可靠的,这将允许我跟踪传递函数或方法的信息。

EN

回答 2

Stack Overflow用户

发布于 2013-10-16 12:35:25

没有问题,你当然可以有更多的论点,你喜欢。当然,当它们被正确命名时,它会使你的生活更容易。

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

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

代码语言:javascript
运行
复制
class User
{
  protected $username;

  protected $employeeNumber;

  protected $streetNumber;

  public function getUsername();

  public function setUsername($username);

  public function setEmployeeNumber($number);

}

然后在客户端代码中:

代码语言:javascript
运行
复制
$user = new User();
$user->setUsername($user);
$user->setEmployeeNumber($employeeno);
//....

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

代码语言:javascript
运行
复制
public function register(User $user)
{
  // Save the users data
}

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

票数 2
EN

Stack Overflow用户

发布于 2013-10-16 12:40:26

如果要继续使用函数式编码,则可以始终使用数组。

代码语言:javascript
运行
复制
$data = array("user" => "hello", "employeeno" => 123456, "streetno" => 123, "street" => "Stack Overflow Avenue"); // etc...
addUser($data);

或者,如果您想要更容易阅读版本:

代码语言:javascript
运行
复制
$data['user'] = "hello";
$data['employeeno'] = 123456;
$data['streetno'] = 123;
$data['street'] = "Stack Overflow Avenue";
addUser($data);

或者清理第一个版本:

代码语言:javascript
运行
复制
$data = array("user" => "hello", 
"employeeno" => 123456, 
"streetno" => 123, 
"street" => "Stack Overflow Avenue"); // etc...
addUser($data);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19403309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档