2016-11-24 16 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

ミルクを整数または浮動小数点にすることは全体的には良いアイデアでしたが、私はそれに言及するのを忘れました。 emptyMilk()を$ this-> milk = 0または0.0に設定することで、私はちょうどうまく動作するPHP関数empty()を使うことができます。 – WhoobWhoob

関連する問題