假设我有一个类Test,它有一个名为$_list
的私有属性和一个公共设置器。
公共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);
}
}
问题是 - 我是否需要使用公共setter在类中设置私有属性值?
哪种方式更好 - #1还是#2?为什么呢?
你更喜欢哪种方式?
我希望看到一个完整的答案,解释每种方式的优缺点。
感谢。
答案 0 :(得分:1)
如上所述,两者都是可以接受的,但正确的答案是:使用直接属性访问,但有时你最好使用setter。
1号,(物业访问)优点:
2号,(设定者)优点:
我认为提出使用变量背后没有逻辑更为重要。 如果简单,请使其看起来很简单。如果不是,您仍然可以使用setter。
您也可以询问有关获取者与财产访问的相同内容,以上也适用。