【问题标题】:Subscribe on Events by Event name prefix using Symfony EventDispatcher使用 Symfony EventDispatcher 按事件名称前缀订阅事件
【发布时间】:2016-12-27 15:50:44
【问题描述】:

是否可以通过名称前缀监听所有事件?

例如我们有事件kernel.componentName.eventName

我可以收听带有前缀kernel.componentName.* 或类似名称的任何事件吗?

【问题讨论】:

    标签: php event-handling symfony


    【解决方案1】:

    您可以通过多种方式做到这一点。其中之一是不带任何参数地调用EventDispatcher#getListeners,获取所有以kernel.componentName.开头的事件名称列表,并一一订阅。

    我认为更简单的方法是扩展EventDispatcher

    use Symfony\Component\EventDispatcher\EventDispatcher;
    use Symfony\Component\EventDispatcher\Event;
    
    class MyEventDispatcher extends EventDispatcher
    {
        protected function doDispatch($listeners, $eventName, Event $event)
        {
            // add logic here
            if (strpos($eventName, 'kernel.componentName.') === 0) {
                // do something, like call another listener or a callback
            }
    
    
            parent::doDispatch($listeners, $eventName, $event);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 1970-01-01
      • 2018-02-02
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多