2009-07-20 秀麗
PHPでnewと同時にメソッドチェーンする方法
最近ようやくPHP5をちょこちょこと触ってるわけなんですが、折角メソッドチェーンサポートされたのに何故かnewと同時にできない罠。
これなんか動いても良さそうなのになぁ。直感的だし。
<?php (new Foo)->bar();
嘆いてもしょうがない。動かないものは動かないので、ちょこちょこと調べてたらこんなのが
そこで以下のような関数を定義する。
<?php function ref($obj) { return $obj; }この関数はみたとおり渡された値をそのまま返す関数だが、これを使うことで以下のようにメソッドチェーンできるようになる。
<?php ref(new Hoge)->doSomething();というバッドノウハウっぽい話。
PHPでコンストラクタからメソッドチェーンする方法 - id:anatooのブログ
やっぱこれくらいしかないよねー。
でも標準関数だけでやりたいのが人情というもの。あれこれ試してみたところ、やっとこさ実現できた。
ってことで僕が出した結論はコレ。
<?php pos(array(new Foo))->bar();
これがホントのバッドノウハウ。
可読性?しったこっちゃねーお!
トラックバック - http://d.hatena.ne.jp/fbis/20090720/1248065234





