我正在使用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中被推送时被初始化(及其所有依赖项)。
有关于ContainerAwareEventDispatcher的文档: http://symfony.com/doc/current/components/event_dispatcher/container_aware_dispatcher.html 但这仅解释了如何在PHP中直接使用它,而不是如何在标准symfony2项目中配置它。
答案 0 :(得分:3)
您可以将其定义为懒惰服务,例如添加相对标记(如here所述):
my.handler:
class: Acme\AcmeBundle\DependencyInjection\MyHandler
lazy: true
arguments:
- @my.dependency
tags:
- { name: kernel.event_listener, event: my.event, method: handle }
请记住按照文档
中的说明安装 ProxyManager网桥希望这个帮助