2012-01-11 3 views
1

私はいろいろな種類のモデルを持っていて、それらの多くは少なくとも1つの依存関係(通常はDbアダプター)を持っています。私はちょうどDICやIoCのアイデアを得ています。私は必要なものを頭に入れようとしています。すべての例では、通常、コンテナを使って単一のオブジェクトを簡単に作成しています。いくつの依存性注入コンテナを作成すればよいですか?

私は多くのユーザーモデル、多くのブログモデル、および他のあらゆる種類のものを持っていますが、これをどうすれば管理できますか? 1つの大きな容器、多くの小さな容器、または1つの工場のPERモデルを持つことは一般的ですか?

これは間違っていると思いますか?

注:以下のように、モデルによって、私はと信じています。私は "ドメインモデル"を意味します。具体的には、ユーザー、ブログなど、自分のウェブサイトやアプリケーションに固有のデータを管理するのに役立つクラスです。

+0

DBからモデルオブジェクトを取得するにはどうすればよいですか?たとえば、 '$ user1 = Users :: load($ id)'を持っていますか?または '$ users = new Users($ db); $ user1 = $ users-> load($ id) '?どのクラスが '$ user1'ですか?それは 'Users'か別のクラスか、おそらく' User'でしょうか?私はあなたが持っている混乱は、DIに適合していない非常に珍しいクラス構造かもしれないし、012チュートリアルDIチュートリアルとは違っているかもしれないと思うよ –

答えて

3

通常、アプリケーションには1つのコンテナで十分です。 DI容器を適切に使用する方法を記述するComposition Rootという概念があります。

ユーザー、ブログなどのビジネスモデルクラスは、通常、コンテナから引き出されません。指定されたファクトリは、モデルオブジェクトを作成する必要があるクラスに注入できます。

+0

男、 – johnnietheblack

+0

@セバスチャンなので、UserFactory、JobFactory、ProjectFactoryなどの各モデルのファクトリを持ち、ブートストラップファイルの依存関係を定義します。 – danidacar