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

Php 从Symfony DI组件获取新实体实例,php,symfony,dependency-injection,Php,Symfony,Dependency Injection,我在理解如何在此场景中实现最佳DI实践时遇到了一些困难 我有一个ZF1项目,实现了Symfony2 DI容器。我所有的服务类等都是通过DI容器创建的,我现在正在重构我自己的服务类的依赖关系。到目前为止还不错,但现在我偶然发现了一个问题,我需要创建一个条令实体的X个实例,但我不知道如何将依赖项从服务类抽象到容器中。它不是一个真正的单类实例,因此不能在构造时注入 有几个场景浮现在脑海中,我正在寻找建议,什么是首选的道路 获取对DI容器的引用,并在需要时从中获取新实例,这有一个缺点,即现在我的服务类将

我在理解如何在此场景中实现最佳DI实践时遇到了一些困难

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

有几个场景浮现在脑海中,我正在寻找建议,什么是首选的道路

  • 获取对DI容器的引用,并在需要时从中获取新实例,这有一个缺点,即现在我的服务类将依赖于DI容器,imho正在用更多邪恶来修复邪恶

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

  • 注入实体类名并动态实例化实例。因此,与其执行
    new\My\Entity()
    doing
    new$this->entityClass
    ,不如说实话,它闻起来太难闻了,但可以工作

  • ?


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

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

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

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

    跳舞。否?

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

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

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

    跳舞。否?

    这难道不使得模仿实体更难/不可能吗?也许一个实体在这里不是一个完美的用例?我不是一个单元测试高手,但在这种情况下你不需要模仿实体,不是吗?你(应该)需要模仿的只是实体经理。这难道不使得模仿实体更难/不可能吗?也许一个实体在这里不是一个完美的用例?我不是一个单元测试高手,但在这种情况下你不需要模仿实体,不是吗?您(应该)需要模拟的只是实体管理器。