我有这个小依赖注入容器,我实例化如下:
$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
?