我有一个服务类依赖于多个实体存储库,例如 4。
我可以注入(inject)每个存储库并以许多依赖项结束,或者我可以将实体管理器作为单个依赖项注入(inject);依赖于 EntityManager->getRepo('xyz')
。
独立的依赖有代码提示的好处。
单一依赖意味着在构造时不那么冗长。
可能更简单的模拟和更少的设置?
什么是更好的做法?
最佳答案
在这种情况下,EntityManager 类似于 Service Locator .当服务依赖于 EntityManager 时,它也正式依赖于它的所有 API 和所有相关对象(存储库、元数据等)。最好只注入(inject)你真正需要的东西: 特定存储库的显式注入(inject)使您的服务更易于阅读和测试。
此外,如果可能,优先选择接口(interface)而不是类(ObjectRepository 而非 EntityRepository,ObjectManager 而非 EntityManager)。
关于php - 注入(inject)依赖项 - Doctrine : Multiple repositories vs single entity manager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586472/