我应该创建这个访问者

时间:2016-11-24 11:07:45

标签: php accessor

所以我得到了这个示例布局。

private $_getMilk() = '';

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

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

SetMilk还用来清空牛奶,这听起来很奇怪,如果你要牛奶,为什么要设置空字符串。

我是否应该创建函数emptyMilk。 (因为牛奶属性被称为很多)

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

1 个答案:

答案 0 :(得分: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的任何值,而不是使一个值特殊。