我正在使用服务层,然后,我有很多服务,如:
有时我需要使用其他服务的服务。
目前,我正在使用sfServiceContainer进行依赖注入,我在我的一些服务中注入了我的Doctrine 2实体管理器,但是,我正在考虑切换并注入Container实例以便能够获取任何服务和EntityManager的。
但是我被困住了,我不确定这是个好主意。
答案 0 :(得分:0)
如果您的容器没有为您提供更好的方法,那么可以使用服务定位器。
如果您使用像Ding这样的容器(http://marcelog.github.com/Ding),您的服务将是bean,而不是拥有服务定位器,您可以在这些服务中实现IContainerAware接口。
每当创建这些bean时,容器就会自动注入,然后你可以直接从这些服务/ bean中使用$ this-> getBean('aService')。在Ding的情况下,甚至还有一个Doctrine2集成示例(包括注入EntityManager)