2016-11-24 132 views
0

所以我得到了這個示例佈局。我應該創建此訪問器嗎?

private $_getMilk() = ''; 

public function getMilk():string { 
    return $this->_milk; 
} 

public function setMilk(string $milk) { 
    $this->_milk = $milk; 
} 

SetMilk也用於清空牛奶,這聽起來很奇怪我爲什麼設置空字符串,如果你問牛奶。

我是否應該創建函數emptyMilk。 (asume奶屬性得到很多稱呼)

public function emptyMilk() { 
    $this->_milk = ''; 
} 
+3

對於記錄,'private string _getMilk()='';'是無效的PHP。 –

+1

撇開Jon Stirling指出的,你已經可以通過setMilk(正如你已經指出的)清空牛奶,這非常好。另一個專門稱爲'emptyMilk'的功能只會增加複雜性,這在真正不需要複雜性的情況下。 – Andrew

回答

0

一個單獨emptyMilk()功能的好處是,它可以讓你使用一個特殊的表示爲一個空對象,而不是暴露的是給市民。

private $is_empty = true; 

public function getMilk(): string { 
    if ($this->$is_empty) { 
     throw new Exception("Empty milk"); 
    } 
    return $this->$_milk; 
} 

public function setMilk(string $milk) { 
    $this->is_empty = false; 
    $this->_milk = $milk; 
} 

public function emptyMilk() { 
    $this->is_empty = true; 
    $this->_milk = null; 
} 

public function gotMilk(): boolean { 
    return !$this->is_empty; 
} 

這使您可以使用$_milk的任何值,而不是使一個值特殊。

+0

使牛奶成爲一個整數或浮動本來是一個更好的主意,但我忘了提到這一點。在$ this-> milk = 0或0.0上設置emptyMilk()將允許我們使用PHP函數empty(),我也可以使用它。 – WhoobWhoob

相關問題