我在理解如何在这种情况下实施最佳DI实践时遇到一些麻烦。
我有一个ZF1项目,实现了Symfony2 DI容器。我的所有服务类都是通过DI容器创建的,我现在正在重构我的服务类的依赖关系。到目前为止这么好但现在我偶然发现了一个问题,我需要创建一个Doctrine Entity的X实例,但我不知道如何将服务类中的依赖项抽象到容器中。它不是一个真正的单一类实例,所以它不能在施工时注入。
我想到了几个场景,我正在寻找建议,首选的道路是什么。
获取对DI容器的引用并在需要时从中获取新实例,这样做的缺点是,现在我的Service类将依赖于DI容器,而imho正在以更邪恶的方式修复邪恶。
打电话给工厂,我已经阅读了symfony DI容器中的工厂实现,但没看到这对我有什么帮助。也许我错过了什么?
注入实体className并动态实例化实例。因此,这不是做new \My\Entity()
做new $this->entityClass
,而是说实话,但也可以有效。
??
有人能告诉我这些场景是如何使用symfony2 DI容器解决的吗?
答案 0 :(得分:1)
您不需要向服务类注入任何内容来创建实体管理器本身以外的实体。
因为除非我误解你,否则你只是在谈论导入适当的命名空间并完成整个
$e = new Entity();
$em->persist( $e );
$em->flush();
舞蹈。否?