3

假设我有一个类 Test,它有一个名为 的私有属性$_list和一个公共 setter。
public setter 用于从外部设置属性值。

class Test {
    private $_list;

    public function getList() {
        return $this->_list;
    }

    public function setList($list) {
        $this->_list = $list;
    }

    public function initialize() {
        $list = array();

        /* ... Some code that fills the $list with values etc. ... */

        // 1) Set value directly
        $this->_list = $list;

        // 2) Use public setter
        $this->setList($list);
    }
}

问题是 - 我需要使用公共设置器在类内设置私有属性值吗?
哪种方式更好 - #1 或 #2?为什么?
你更喜欢哪种方式?我希望看到一个完整的答案,并解释每种方式的优缺点。

谢谢。

4

1 回答 1

1

正如上面所写,两者都是可以接受的,但正确的答案是:宁可使用直接属性访问,但有时您最好使用设置器。

第 1 号,(物业访问)优点:

  • 易于阅读且速度稍快
  • 为您提供这是对象的简单属性的方法

2号,(二传手)优点:

  • 您可以对设置属性执行自定义操作(例如初始化其他属性、缓存或调用参数对象上的方法)
  • 您将属性视为类的子元素,它可能已经实现了自己的逻辑。

我认为提出使用变量背后没有逻辑更重要。如果它很简单,让它看起来很简单。如果不是,您仍然可以使用 setter。

您也可以询问有关 getter 与属性访问的相同问题,上述内容也适用。

于 2013-01-08T17:20:34.707 回答