Python や Ruby などの OO 言語で一般的に使用されるイディオムは、オブジェクトをインスタンス化し、オブジェクト自体への参照を返すメソッドをチェーン化することです。
s = User.new.login.get_db_data.get_session_data
PHP では、この動作を次のように再現できます。
$u = new User();
$s = $u->login()->get_db_data()->get_session_data();
以下を試みると、次の結果になりsyntax error, unexpected T_OBJECT_OPERATOR
ます。
$s = new User()->login()->get_db_data()->get_session_data();
これはおそらく私がやることになる静的メソッドを使用して達成できるようですが、lazyweb を確認したかったのですが、PHP クラスを「インライン」でインスタンス化するためのクリーンで簡単な方法は実際にありますか?この目的のために?
静的メソッドを使用することにした場合、クラスの静的メソッドがクラス自体のインスタンス化を返すのはあまりにも魔術的ですか? (コンストラクターではない独自のコンストラクターを効果的に作成しますか?) ちょっと汚い感じがしますが、恐ろしい副作用があまりない場合は、そうするかもしれません。
get_user() メソッドを使用して UserFactory を事前にインスタンス化することもできると思いますが、上記で尋ねたことに対する解決策に興味があります。