1

我使用一个服务层,然后,我有很多的服务,如:使用服务定位器向服务提供容器实例是错误的吗?

  • UserService
  • ArticleService
  • CommentService
  • AuthorizationService

有时候,我需要使用来自另一个服务的服务。

目前,我使用sfServiceContainer进行依赖注入,并且在我的一些服务中注入了我的Doctrine 2实体管理器,但是,我正在考虑切换并注入容器实例以便能够获取任何服务和EntityManager。

但我被卡住了,我不确定这是个好主意。

+0

可能的重复[创建一个单例访问统一容器或通过应用程序传递它更好吗?](http: //stackoverflow.com/questions/2386487/is-it-better-to-create-a-singleton-to-access-unity-container-or-pass-it-through-t) – 2011-05-15 14:10:08

回答

0

如果您的容器没有为您提供更好的方法来使用服务定位器,那就可以了。

如果您使用Ding(http://marcelog.github.com/Ding)这样的容器,那么您的服务将是bean,而不是具有服务定位器,您可以在这些服务中实现IContainerAware接口。

无论何时创建这些bean,容器都会注入自己,然后您可以直接从这些服务/ bean中获取$ this-> getBean('aService')。在丁的情况下,甚至有一个Doctrine2集成的例子(包括EntityManager的注入)

相关问题