我在理解如何在这种情况下实施最佳 DI 实践时遇到了一些麻烦。
我有一个实施了 Symfony2 DI 容器的 ZF1 项目。我所有的服务类等都是通过 DI 容器创建的,我现在正在重构我的服务类本身的依赖关系。到目前为止一切顺利,但现在我偶然发现了一个问题,我需要创建一个 Doctrine 实体的 X 实例,但我不知道如何将依赖关系从服务类抽象到容器中。它不是一个真正的单类实例,因此不能在构造时注入。
有几种情况浮现在脑海中,我正在寻求建议,首选的道路是什么。
获取对 DI 容器的引用并在需要时从中获取新实例,这有一个缺点,现在我的 Service 类将依赖于 DI 容器,恕我直言,它正在用更多的邪恶来修复邪恶。
打电话给工厂,我已经阅读了 symfony DI 容器中的工厂实现,但看不到这对我有什么帮助。也许我错过了什么?
注入实体 className 并动态实例化实例。因此,与其
new \My\Entity()
做做new $this->entityClass
,不如说实话,这闻起来太老实了,但可以工作。??
谁能告诉我这些场景通常是如何使用 symfony2 DI 容器解决的?