robinvdvleuten / lazy-event-dispatcher
此包已被废弃,不再维护。未建议替代包。
一个事件调度器,它会在刷新之前保持任何事件。
v1.1.0
2019-01-28 10:07 UTC
Requires
- php: ^7.0
- symfony/event-dispatcher: ^2.8 || ^3.0 || ^4.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2022-02-04 09:35:07 UTC
README
一个事件调度器,它会在刷新之前保持任何事件。
使用场景
如果你想在响应已流回客户端之后,使用 kernel.terminate 事件执行一些“重”操作。Symfony 默认已这样做,但通过此监听器,你可以支持任何自定义事件类。
安装
推荐通过 Composer 安装库。
composer require robinvdvleuten/lazy-event-dispatcher
然后安装监听器作为服务;
services: app.lazy_event_dispatcher: class: Rvdv\LazyEventDispatcher\LazyEventDispatcher arguments: - "@event_dispatcher" tags: - { name: kernel.event_listener, event: kernel.terminate, method: flush }
然后添加一个自定义编译器过程以拥有新的事件监听器类型;
<?php namespace AppBundle; use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass; use Symfony\Component\HttpKernel\Bundle\Bundle; class AppBundle extends Bundle { /** * {@inheritdoc} */ public function build(ContainerBuilder $container) { $container->addCompilerPass( new RegisterListenersPass('app.lazy_event_dispatcher', 'lazy.event_listener', 'lazy.event_subscriber'), PassConfig::TYPE_BEFORE_REMOVING ); } }
然后你可以注册任何“延迟”事件监听器,如下所示;
services: app.custom_event_listener: class: AppBundle\EventListener\CustomEventListener tags: - { name: lazy.event_listener, event: custom_event }
许可证
MIT © Robin van der Vleuten