从Symfony DI组件获取新的实体实例

时间:2012-07-10 14:50:09

标签: php symfony dependency-injection

我在理解如何在这种情况下实施最佳DI实践时遇到一些麻烦。

我有一个ZF1项目,实现了Symfony2 DI容器。我的所有服务类都是通过DI容器创建的,我现在正在重构我的服务类的依赖关系。到目前为止这么好但现在我偶然发现了一个问题,我需要创建一个Doctrine Entity的X实例,但我不知道如何将服务类中的依赖项抽象到容器中。它不是一个真正的单一类实例,所以它不能在施工时注入。

我想到了几个场景,我正在寻找建议,首选的道路是什么。

  1. 获取对DI容器的引用并在需要时从中获取新实例,这样做的缺点是,现在我的Service类将依赖于DI容器,而imho正在以更邪恶的方式修复邪恶。

  2. 打电话给工厂,我已经阅读了symfony DI容器中的工厂实现,但没看到这对我有什么帮助。也许我错过了什么?

  3. 注入实体className并动态实例化实例。因此,这不是做new \My\Entity()new $this->entityClass,而是说实话,但也可以有效。

  4. ??

  5. 有人能告诉我这些场景是如何使用symfony2 DI容器解决的吗?

1 个答案:

答案 0 :(得分:1)

您不需要向服务类注入任何内容来创建实体管理器本身以外的实体。

因为除非我误解你,否则你只是在谈论导入适当的命名空间并完成整个

$e = new Entity();
$em->persist( $e );
$em->flush();

舞蹈。否?