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