假设我们有一个Symfony包,其中包含一个具有由接口定义的依赖关系的服务(策略模式)。我也有几个在同一个bundle中定义的接口(即策略)的实现。每个策略还可能具有我需要进一步配置的各种进一步依赖性。所以我在bundle中的services.yml可能看起来像这样:
services:
my_service:
class: MyBundle\Services\MyService
arguments: ['@my_strategy']
my_strategy_service_1:
class: MyBundle\Services\MyStrategyService1
my_strategy_service_2:
class: MyBundle\Services\MyStrategyService2
argument: [@my_memcache]
我可以在应用程序的config.yml中选择实现。
services:
my_strategy:
alias: my_strategy_service_2
my_memcache:
class: Memcached
calls:
- [ addServer, [%memcache_host%, %memcache_port%] ]
让我们坚持这个例子,让我们改变实施。如果我在应用程序中的config.yml中写入:
services:
my_strategy:
alias: my_strategy_service_1
它仍然不幸地要求我定义" my_memcache"服务,即使这次没有使用,但只在捆绑中定义。我该如何处理这种情况?我是否可以强制检查" my_strategy_service_2"的依赖关系?只有它真的被使用过?
答案 0 :(得分:0)
通常我会实现"注册"在上下文和策略使用之间:
希望它清楚