0

是否可以在运行时对 Symfony2 中的服务设置方法调用?

我想在运行时设置这样的东西:

calls:
            - [ setEventDispatcher, [ @event_dispatcher ] ]

场景将是:
onKernel 事件上有一个侦听器,它将检查请求中是否设置了参数,然后将方法调用添加到容器中的服务。
所以延迟加载会被保留,我猜。

我看到构建器中有一个方法setMethodCalls(),所以也许我可以使用它?

4

1 回答 1

1

我认为在您的捆绑包中,您应该从Symfony\Component\DependencyInjection\Loader\YamlFileLoader那里扩展并重写方法parseDefinition()以获取不仅calls部分,而且还包含您想要使用的某些条件的自定义部分。

最后,您将拥有如下服务配置:

calls:
    always:
        - [ setEventDispatcher, [ @event_dispatcher ] ]
    on_condition:
        variable: "value"

希望能帮助到你...

于 2012-07-27T14:35:19.330 回答