Unknown::Programming このページをアンテナに追加 RSSフィード

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