PHPでメソッドチェーン

            <div class="section">

メソッドチェーンといって、オブジェクトを連ねて処理させる方法がある。

class Hoge {
 function Hoge() {
 }
 public function eh($str) {
  echo htmlspecialchars($str);
 }
}
new Hoge()->eh("この引数が表示される");

Hoge::eh("この引数が表示される");と書くことも出来るが、今回はメソッドチェーンのお話。

動かすと、「PHP Parse error: parse error, unexpected T_OBJECT_OPERATOR」というエラーが返ってくる。

PHPでは動かない。

これを動かすには、以下のような関数を用意する必要がある。

function expr($f) {
 return $f;
}

この関数を以下のように使うことで、メソッドチェーンを実現することが出来る。

class Hoge {
 function Hoge() {
 }
 public function eh($str) {
  echo htmlspecialchars($str);
 }
}
function expr($f) {
 return $f;
}
expr(new Hoge())->eh("この引数が表示される");

ソースコードがスッキリするので、個人的には好きな書き方です。

でも、Hoge::eh("この引数が表示される");の方が僕は好きです。

参考
http://d.hatena.ne.jp/amachang/20090803/1249292858