私はこの小さな依存性注入コンテナを持っています。これは次のようにインスタンス化します。
$services = new Services();
パラメータを追加する必要がある場合は、次のようにします。
$services->setParameter($name, $value);
そして、このインスタンスを$services
いくつかのオブジェクトのコンストラクターに渡します。データベースハンドルのようなものが必要な$this->services->getService('db');
場合は、データベースハンドルのインスタンスを返します。後でそのメソッドを再度呼び出すと、同じインスタンスが返されます。データベースは以前に処理しました。
私が知りたいのは、オブジェクトのような単一インスタンスオブジェクト専用の依存性注入コンテナ$dbh, $config, $user, $auth
ですか?
たとえば、Products
クラスの複数のインスタンスを作成する必要がありますが、次の場合に実行します。
$services->setParameter('product.id', $productId);
$product[] = $services->getService('product');
明らかに新しいインスタンスが作成されますがProduct
、そのコードをもう一度繰り返すと、以前と同じインスタンスが返されます。getService()
メソッドを少し変更して、必要な数の新しいインスタンスを返すことができますが、それが作られていない何かのためにDICを使用しているということですか?
したがって、基本的に、DICは次のようなクラスの単一インスタンスのみを返す必要があります$dbh, $user etc
か??のようなオブジェクトを作成していませんOrders, Products, Invoices
か?