最近Symfonyの深さに溺れそうな毎日を送っております。
さて、サービスコンテナに登録する際に、スタティックなファクトリメソッドを実行する場合にはどうしたらいいのか。
大したことないんですが、今日ちょっと調べたのでその記録がてら記事書いてみました。
そもそもサービスコンテナに登録する際にファクトリメソッドって使えるの?
そもそもサービスコンテナに登録する際に、ファクトリメソッドが使えるのって話になるかと思いますが、可能です。 例えば、Doctrineのリポジトリクラスをコンテナに登録したい場合に、以下のように登録することができます。
|
|
factoryで生成するためのサービスと、メソッド名を指定するだけで、生成してもらえます。 ちなみにこれはsymfony2.6以降の書き方なので、それ以前のバージョンの方は、以下のように書いてください。
|
|
スタティックなファクトリメソッドを利用する
まあ別に大したことするわけでもなく、単純にクラス名を指定してあげれば大丈夫です。
例えば、AWS SDK for PHPでオブジェクトを生成する場合は以下のようにします。
|
|
まとめ
結構簡単にシングルトンで生成されるインスタンスも登録できるので使ってみる価値はかなりあると思います。
参考
http://symfony.com/doc/current/components/dependency_injection/factories.html