Как в Symfony дебажить event?

В Symfony для дебага событий (events) используется компонент EventDispatcher и инструменты отладки Symfony.

Для начала, убедитесь, что в вашем проекте установлен пакет symfony/event-dispatcher, который содержит компонент EventDispatcher.

1. Создание слушателя (listener) для события:
В Symfony слушатели реагируют на определенные события, поэтому перед тем как начать дебаг, вам необходимо создать слушателя для события, которое вас интересует.

<?php

namespace AppEventListener;

use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentHttpKernelKernelEvents;
use SymfonyComponentHttpKernelEventControllerEvent;

class EventListener implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            KernelEvents::CONTROLLER => 'onKernelController',
        ];
    }

    public function onKernelController(ControllerEvent $event)
    {
        // Ваш код для дебага
    }
}

2. Регистрация слушателя:
После создания слушателя, необходимо зарегистрировать его в приложении. Это можно сделать в файле конфигурации, например, config/services.yaml:

services:
    AppEventListenerEventListener:
        tags:
            - { name: kernel.event_listener, event: kernel.controller }

3. Дебаг событий:
Symfony предоставляет несколько инструментов, с помощью которых можно дебажить события.

a) Использование команды console:
Symfony Console предоставляет команду debug:event-dispatcher, с помощью которой можно отобразить все зарегистрированные события и их слушателей:

$ php bin/console debug:event-dispatcher

b) Использование инструментов отладки Symfony:
Symfony предоставляет свои инструменты для отладки, такие как Profiler и VarDumper. Вы можете использовать их для отображения информации о событии во время выполнения.

public function onKernelController(ControllerEvent $event)
{
    dump($event); // Использование VarDumper для отображения информации о событии
    // Ваш код для дебага
}

c) Использование монополиста событий:
Symfony предоставляет монополиста событий - класс EventDispatc