讓我們假設我有一個類Test,它具有一個名爲$_list
的私有屬性,以及一個公共setter。
公用設置器用於從外部設置屬性值。我應該使用公共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?爲什麼?
你喜歡哪種方式? 我希望看到一個完整的答案,解釋每種方式的優缺點。
謝謝。
兩者都很好。函數調用的開銷很小,但不足以產生影響。除此之外,在這種情況下它們基本相同。使用該函數的一個好處是,如果在設置變量時使用了額外的邏輯,在這種情況下,它將保持事物一致,而不需要複製代碼。 –
公共訪問私有變量有什麼意義? O_O –
@AlexLunix可能有各種各樣的原因,而不是給出的例子,但是如果(根據我的評論)有更多的邏輯,比如驗證價值,那麼你不希望人們直接設置他們喜歡的任何值對象屬性,你希望他們通過驗證。 –