Команды консоли отладки — одна из ключевых частей отладки 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"
==================================
// ...