Php 使用Symfony EventDispatcher按事件名称前缀订阅事件

Php 使用Symfony EventDispatcher按事件名称前缀订阅事件,php,event-handling,symfony,Php,Event Handling,Symfony,是否可以通过名称前缀侦听所有事件 例如,我们有eventkernel.componentName.eventName 我可以用前缀kernel.componentName.*或类似的东西来监听任何事件吗?您可以用多种方式来监听。其中之一是调用EventDispatcher#getListeners,不带任何参数,获取以kernel.componentName.开头的所有事件名称的列表,然后逐个订阅它们 我认为更简单的方法是扩展EventDispatcher use Symfony\Compone

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

例如,我们有event
kernel.componentName.eventName


我可以用前缀
kernel.componentName.*
或类似的东西来监听任何事件吗?

您可以用多种方式来监听。其中之一是调用
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);
    }
}