男の子はカッコつけて当たり前です。恥ずかしがることはありません。じゃんじゃんカッコつけていきましょう。
さて、ここでは $this(自身のインスタンス)をリターン値に使用するサンプルコードを掲載しています。なんとなくカッコつけてる気になるのは、私がペッポコプラグラマだからでしょうか?
スポンサーリンク
$this(自身のインスタンス)をリターン値に使用することで、利用者側では視覚的にもすっきりとしたコーディングを行うことができるようになります。特に、順序を気にしなければいけないような場合には、効果を発揮すると思います。ただし、リターン値で結果を判断しなければいけないような部分では不向きです。
$this(自身のインスタンス)をリターン値とする
/**
* 味気ないサンドイッチクラス
*/
class sandwich
{
private $_completed = false;
public function create($bread_num = 2, $beef_num = 1, $tomato_num = 1)
{
$this->_setBread($bread_num) // パンをセット
->_setBeef($beef_num) // 牛肉をセット
->_setTomato($tomato_num); // トマトをセット
echo 'サンドイッチ完成' . PHP_EOL;
$this->_completed = true;
return $this;
}
public function eat()
{
if($this->_completed) {
echo 'ごちそうさまでした' . PHP_EOL;
// 食べたのでなくなった
$this->_completed = false;
} else {
echo 'どこにある?' . PHP_EOL;
}
return $this;
}
private function _setBread($num)
{
/*
* パンを準備した自身をリターン
*/
return $this;
}
private function _setBeef($num)
{
/*
* 牛肉をのせた自身をリターン
*/
return $this;
}
private function _setTomato($num)
{
/*
* トマトをのせた自身をリターン
*/
return $this;
}
}
// 使い方
$sandwich = new sandwich();
$sandwich->create() // 作って
->eat() // 食べて
->create() // 作って
->eat() // 食べて
->eat(); // 食べて
// 出力
//-------------------------------------
// サンドイッチ完成
// ごちそうさまでした
// サンドイッチ完成
// ごちそうさまでした
// どこにある?
//
コンストラクタでリターン値(メモ)
PHP では、コンストラクタでも($this に限らず)リターン値を返すようなコーディングを行ってもエラーとなりません。ただし、おもいっきり無視されます。why???
この部分は単なるメモです。おまけです。
class sandwich
{
public function __construct()
{
return 2; // 無視される。エラーにならない。why?
}
}