私はPHPアプリケーションをリファクタリングしていますが、可能な限り多くの依存性注入(DI)をしようとしています。
私はそれがどのように機能するかをよく理解しているように感じますし、クラスがかなりスリムで堅牢になっているのを確かに見ることができます。
クラス内に新しいオブジェクトを作成するのではなく依存関係を注入できるようにリファクタリングしていますが、ある時点でいくつかのオブジェクトを作成する必要があります。つまり、dreaded new
キーワードを使用します。
私が今直面している問題は、どの時点で実際に新しいオブジェクトを作成できるかということです。私は最終的にトップレベルのクラスになり、他に行く場所がないため、新しいオブジェクトを大量に作成するように見えます。これは間違っているように感じます。
ファクトリクラスを使用してすべてのオブジェクトを作成するブログを読んだ後、ファクトリを他のクラスに注入します。その後、ファクトリメソッドを呼び出すと、ファクトリが新しいオブジェクトを作成します。
これを行うことに対する私の懸念は、今では私のファクトリークラスがnew
すべて自由になることです!ファクトリクラスであるため、これで問題ないかもしれませんが、ファクトリパターンとDIを使用する場合に固執するいくつかのルールはありますか、それともここから外れますか?
new
。もちろん、IoCコンテナを呼び出す必要があるエントリポイントがいくつかありますが、多くはないはずです。通常、IoCを1回構成してから、リクエストごとに1つのクラスを解決するよう要求します。MVCの場合、通常はコントローラーです。