1

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

我有一个实施了 Symfony2 DI 容器的 ZF1 项目。我所有的服务类等都是通过 DI 容器创建的,我现在正在重构我的服务类本身的依赖关系。到目前为止一切顺利,但现在我偶然发现了一个问题,我需要创建一个 Doctrine 实体的 X 实例,但我不知道如何将依赖关系从服务类抽象到容器中。它不是一个真正的单类实例,因此不能在构造时注入。

有几种情况浮现在脑海中,我正在寻求建议,首选的道路是什么。

  1. 获取对 DI 容器的引用并在需要时从中获取新实例,这有一个缺点,现在我的 Service 类将依赖于 DI 容器,恕我直言,它正在用更多的邪恶来修复邪恶。

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

  3. 注入实体 className 并动态实例化实例。因此,与其new \My\Entity()做做new $this->entityClass,不如说实话,这闻起来太老实了,但可以工作。

  4. ??

谁能告诉我这些场景通常是如何使用 symfony2 DI 容器解决的?

4

1 回答 1

1

除了实体管理器本身之外,您不需要向服务类注入任何东西来创建实体。

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

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

舞蹈。不?

于 2012-07-10T17:39:01.177 回答