设置Symfony2依赖注入服务的参数


Setting parameters for a Symfony2 Dependency Injection service

似乎是一个非常基本的问题,但我找不到答案(可能我在错误的方向思考):

我的服务在一个YML文件中定义。

PurchaseService:
class: Application_Service_Doctrine_PurchaseService  
calls:
- [ setPurchaseRepository, [ @purchase.repository] ]
purchase.repository:      
class: Application_Repository_Doctrine_PurchaseRepository
archive.repository:      
class: Application_Repository_Doctrine_ArchiveRepository

在某种情况下,我想注入存档。Repository而不是purchase.repository。如何?(注意:我没有使用完整的Symfony2框架,只是使用Zend框架项目中的DI容器)

您可以用第二个名称定义服务吗?

ArchiveService:
  class: Application_Service_Doctrine_PurchaseService
  calls:
    - [ setArchiveRepository, [@archive.repository] ]

那么你的客户端代码肯定知道它需要哪个服务?您可以将哪个服务从DIC拉到工厂类中(或者使用控制语句,根据您的需要选择)?