男の子はカッコつけて当たり前です。恥ずかしがることはありません。じゃんじゃんカッコつけていきましょう。
さて、ここでは $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? } }