symfony2事件调度程序延迟加载侦听器


symfony2 event dispatcher lazy loading listener

我正在使用Symfony Event Dispatcher创建一些自己的事件,它运行良好。

然而,我注意到,我在symfony中配置的侦听器并不是懒惰加载的,它总是初始化的。然而,它很少被使用。

我的services.yml中的配置看起来像:

my.handler:
    class: Acme'AcmeBundle'DependencyInjection'MyHandler
    arguments:
      - @my.dependency
    tags:
      - { name: kernel.event_listener, event: my.event, method: handle }

有没有一种方法可以这样配置,即只有在触发事件时才初始化@my.handler?因为现在,当它在Dispatcher中被推送时,它已经初始化(以及它的所有依赖项)。

有关于ContainerwareEventDispatcher的文档:http://symfony.com/doc/current/components/event_dispatcher/container_aware_dispatcher.html但这只是解释了如何在PHP中直接使用它,而不是如何在标准的symfony2项目中配置它。

您可以将其定义为Lazy Services添加相关标记(如本文所述)作为示例:

my.handler:
    class: Acme'AcmeBundle'DependencyInjection'MyHandler
    lazy: true
    arguments:
      - @my.dependency
    tags:
      - { name: kernel.event_listener, event: my.event, method: handle }

请记住按照文档中的说明安装ProxyManager桥接器

希望这能帮助