Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php getter和setter的代码布局_Php_Class_Layout_Setter_Getter - Fatal编程技术网

Php getter和setter的代码布局

Php getter和setter的代码布局,php,class,layout,setter,getter,Php,Class,Layout,Setter,Getter,我正在写一个有很多getter和setter的类,我想知道人们对以下内容的看法: public function setChangeSort($changeSort) { self::$changeSort = $changeSort; } public function getChangeSort() { return self::$changeSort; } public function setChangeSort($changeSort) { self::$chang

我正在写一个有很多getter和setter的类,我想知道人们对以下内容的看法:

public function setChangeSort($changeSort)
{
    self::$changeSort = $changeSort;
}

public function getChangeSort()
{
    return self::$changeSort;
}
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
通常的方法是按照以下方式编码:

public function setChangeSort($changeSort)
{
    self::$changeSort = $changeSort;
}

public function getChangeSort()
{
    return self::$changeSort;
}
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
您对以下工作有何看法:

public function setChangeSort($changeSort)
{
    self::$changeSort = $changeSort;
}

public function getChangeSort()
{
    return self::$changeSort;
}
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
我用最原始的方式做这件事没有问题,因为这是应该做的。在我的classon函数中,它似乎占用了很多空间,这在它们的工作中是非常明显的


提前感谢。

如果一行条件块是一致的、明显的和直观的,就可以了,尽管我鼓励小心地隔开它们,这样很明显它们是函数,而不是一些单行代码

我认为PHP5的神奇功臣在与众多功臣打交道时非常有用

还有一个例子

<?php
class A {
  private $properties = array();

  public function __set($key, $value) {
    if (is_array($value)) {
      $this->$key = $value;
    } else {
      $this->properties[$key] = $value;
    }
  }

  public function __get($key) {
    if (array_key_exists($key, $this->properties)) {
      return $this->properties[$key];
    }

    return null;
  }
}
?> 

我会选择“一行”变体。但是只有当它所做的只是设置和获取一个值时才是。如果您添加null检查或任何其他验证,或者执行除获取或设置之外的任何操作,我将使用第一个和更长的变体以保持代码更可读。

我通常以与其他方法相同的方式威胁单行方法。我不介意我的源代码长N行,如果这意味着它更具可读性和可维护性的话

我还建议签出以下文档
IMHO这是迄今为止最好的PHP编码标准参考。

我还要添加一致性作为第三个限定符!谢谢,不管这是不是正确的方式,我已经决定我将使用1行,因为它们只是非常简单的getter和setter,我有18个!我对这些神奇的功能很警惕。我喜欢出问题时大惊小怪。如果属性不存在,这种方法将自动失败。需要添加其他错误处理代码以支持此操作。如果您必须对任何属性执行验证,这种方法也会变得混乱。由于这两种情况,我发现这种方法的好处很快就失去了。这在通用性和可重用性方面是值得赞赏的。当您希望有一个单一的公共位置来挂接验证代码或挂接插件系统时,这很好。