【发布时间】:2013-01-13 12:37:55
【问题描述】:
好的,我有我的依赖注入容器和一个 DAO,我用它来获取订单,例如:
$container = new DIContainer();
$orderDAO = $container->get('orderDAO');
$order = $orderDAO->fetchById($someId);
然后我就有了易于使用的订单对象。
问题是如果我的$order 对象依赖于Logger、Config 和一两个类似的对象,因为我的$orderDAO 实例化了该对象,它不必有权访问或者能够创建那些额外的对象,我很确定$orderDAO 对象绝对不应该对这些额外的对象一无所知,尤其是不知道如何创建它们。
我知道我可以在实例化 DAO 时(从 DIC 中)将依赖注入容器注入到 DAO 中,这样我就可以从 DAO 中访问我的对象所具有的任何依赖项,但这样做的一些方法出于某种原因,我觉得不对劲,我也绝对不想到处都进行静态调用,这样该方法就被排除在外了。
最好的方法是什么?
任何帮助将非常感谢。
【问题讨论】:
-
您确定不会更改为 J2EE 环境吗? :) 但这很有趣。我自私地为此编写了一个框架。 (几年前)没有事件知道“DAO”这个词。
标签: php oop dependency-injection dao