我已经构建了一个内部 MVC PHP 框架,现在我正在努力实现 DI 容器。我采用 Pimple 作为 DiC,我读过 Chris Hartjes 的书“ The Grumpy Programmer's Guide To Building Testable PHP Applications ”(我觉得这是一本非常好的和鼓舞人心的读物,强烈推荐它!),谈话轻松了我了解更多关于 TDD 的信息。无论如何,如果我在框架的核心中获得了一个 DI,我应该如何填充定义以及我应该传递它。
- 注入容器(注入应用程序对象一直到用户创建的控制器)。-错误
- 强制开发用户在引导程序中“填充”它 -错误
- 单例 -非常错误
- 观察者模式(DiC 附加到观察者。观察者作为 DiC 的前端)- ?(可能是最糟糕的想法:D)
然后如何使核心 DiC 在整个框架中可用(例如,注入配置对象),而不创建任何依赖项,不必要地强迫用户对其进行编码或增加创建 XML/JSON 或任何其他的开销。
PS:**我相信我会看到很多关于控制反转(IoC)和服务定位器的答案。我似乎无法确切了解如何实现它们。请参考我的简单/基本指南。