我应该创建此访问器吗?
问题描述:
所以我得到了这个示例布局。我应该创建此访问器吗?
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 = '';
}
答
一个单独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
对于记录,'private string _getMilk()='';'是无效的PHP。 –
撇开Jon Stirling指出的,你已经可以通过setMilk(正如你已经指出的)清空牛奶,这非常好。另一个专门称为'emptyMilk'的功能只会增加复杂性,这在真正不需要复杂性的情况下。 – Andrew