【发布时间】:2012-12-31 15:24:33
【问题描述】:
我有一个小的依赖注入容器,我将其实例化如下:
$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 这样的对象?
【问题讨论】:
标签: php oop ioc-container