1

我正在使用服务层,然后,我有很多服务,例如:

  • 用户服务
  • 文章服务
  • 评论服务
  • 授权服务

有时我需要使用另一个服务中的服务。

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

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

4

1 回答 1

0

如果您的容器没有为您提供更好的方法来执行此操作,则可以使用服务定位器。

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

每当创建这些 bean 时,容器将自行注入,然后您可以直接从这些服务/bean 内部 $this->getBean('aService') 。在 Ding 的情况下,甚至还有一个 Doctrine2 集成的示例(包括 EntityManager 的注入)

于 2011-07-07T20:08:27.460 回答