我的情况基本上是这样的:我有一个名为Foo的类,它有依赖关系A和B,所有这些都是库的内部。 Foo的实例将由库的用户创建,他们不应该要求了解依赖关系。
在内部当然我希望Foo与A和B的具体实现保持分离。我曾考虑过一个简单的静态工厂类,但是有必要以某种方式为依赖项配置它(比如Factory :: $ _ staticAttr = x)这似乎是错误的,因为它本质上意味着我的静态类具有状态。
我一直在考虑一些XML或其他配置的依赖注入容器,但是它提出了如何使配置的DIC实例可以访问的问题,而不会像在注册表对象中那样混乱。
我正在努力为最终用户提供一些简单的方法来生成注入所有内容的Foo实例,同时保持库中隐藏所有依赖项等细节。
我已经读完了,解决方案还没有真正让我明白,所以我很感激任何输入:)。
答案 0 :(得分:0)
我自己使用一个依赖注入容器(一个静态工厂)来做这些事情。 请仔细阅读以下文章:http://www.potstuck.com/2009/01/08/php-dependency-injection/
我正在努力寻找一些微不足道的方法 为最终用户生成一个 一切都是Foo的例子 注入,同时保持所有 隐藏的依赖关系的细节 在图书馆内。
在那种情况下,我肯定会找工厂。
<强>更新强>
这就是静态类的用途。它们代表某种状态,就像在这种情况下一样。您只需要一个db适配器(每个application | class | package),因此您可以反复使用同一个db。
使用global
会更加hackyish;)
答案 1 :(得分:0)
感谢您的回复。
嗯,我昨天读了那篇文章。我唯一的问题是:`Factory::$_database = $ourDatabaseVarForDB1;`
虽然很方便,但这种实现方式对我来说有点像黑客的方式吗?
然而它会勾选其他方框,所以如果没有更好的情况,那就需要这样。