我应该创建这个访问器吗

Should I create this accessors

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

private $_getMilk() = '';

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

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

SetMilk 也用于清空牛奶,这对我来说听起来很奇怪,为什么如果你要牛奶就设置空字符串。

我是否也应该创建函数 emptyMilk. (假设牛奶 属性 经常被调用)

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 使用任何值,而不是将一个值设为特殊值。