Новое в Symfony 5.3: Улучшенные команды отладки

Команды консоли отладки — одна из ключевых частей отладки Symfony. В Symfony 5.3 улучшили их новыми функциями и новыми командами.

Отладка событий для диспетчера событий

Последние функции, представленные в компоненте Security, изменили количество диспетчеров событий, которые приложения Symfony имеют по умолчанию. Каждый брандмауэр теперь определяет своего собственного диспетчера, тогда как команда debug:event-dispatcher отображает только диспетчер по умолчанию.

В Symfony 5.3 добавили новую опцию --dispatcher для отображения событий, связанных с данным диспетчером событий:

php bin/console debug:event-dispatcher --dispatcher=security.event_dispatcher.main

Registered Listeners of Event Dispatcher "security.event_dispatcher.main" Grouped by Event
==========================================================================================

"Symfony\Component\Security\Http\Event\LogoutEvent" event
---------------------------------------------------------

 ------- ------------------------------------------------------------------------------------------- ----------
  Order   Callable                                                                                    Priority
 ------- ------------------------------------------------------------------------------------------- ----------
  #1      Symfony\Component\Security\Http\EventListener\CsrfTokenClearingLogoutListener::onLogout()   0
 ------- ------------------------------------------------------------------------------------------- ----------

Улучшена отладка событий

В Symfony 4.3 начали отходить от строк для именования событий в пользу использования полностью определенных имен классов. Это упрощает ваш код, но усложняет использование команды debug:event-dispatcher, когда вы хотите фильтровать по событию.


 php bin/console debug:event-dispatcher Symfony\\Component\\Mailer\\Event\\MessageEvent

  ------- --------------------------------------------------------------------------- ----------
   Order   Callable                                                                    Priority
  ------- --------------------------------------------------------------------------- ----------
   #1      Symfony\Component\Mailer\EventListener\MessageListener::onMessage()         0
   #2      Symfony\Component\Mailer\EventListener\EnvelopeListener::onMessage()        -255
   #3      Symfony\Component\Mailer\EventListener\MessageLoggerListener::onMessage()   -255
  ------- --------------------------------------------------------------------------- ----------

В Symfony 5.3 улучшили эту команду для поиска событий по ее полному имени или любой его части. Таким образом, следующие команды дают тот же результат, что и выше:

php bin/console debug:event-dispatcher Mailer
php bin/console debug:event-dispatcher mailer
php bin/console debug:event-dispatcher MessageEvent
php bin/console debug:event-dispatcher messageEvent
php bin/console debug:event-dispatcher messageevent

Новая команда для отладки межсетевых экранов

В рамках недавних улучшений, связанных с безопасностью, в Symfony 5.3 добавили новую команду для отладки брандмауэров безопасности.

Запустите команду без аргументов, чтобы вывести список брандмауэров, или передайте имя брандмауэра для его отладки:

php bin/console debug:firewall main

  Firewall "main"
  ===============

   ----------------------- ---------------------------------------------------
    Option                  Value
   ----------------------- ---------------------------------------------------
    Name                    main
    Context                 main
    Lazy                    Yes
    Stateless               No
    User Checker            security.user_checker
    Provider                security.user.provider.concrete.app_user_provider
    Entry Point             App\Security\LoginFormAuthenticator
    Access Denied URL
    Access Denied Handler
   ----------------------- ---------------------------------------------------

  User switching
  --------------

   ----------- ---------------------------------------------------
    Option      Value
   ----------- ---------------------------------------------------
    Parameter   test
    Provider    security.user.provider.concrete.app_user_provider
    User Role   ROLE_SWITCH_POSSIBLE
   ----------- ---------------------------------------------------

  Event listeners for firewall "main"
  ===================================

  "Symfony\Component\Security\Http\Event\LoginSuccessEvent" event
  ---------------------------------------------------------------
  // ...

  Authenticators for firewall "main"
  ==================================
  // ...