Життя запиту

← Життя запиту

Ashterix

docs(articles): From Magento to Symfony, a requalification guide grouped into sections

uk/articles/magento-to-symfony/basics/lifecycle.md новий файл +32 −0

Життя запиту

У Magento запит проходить FrontController, список роутерів і execute() дії. У Symfony HttpKernel виконує той самий шлях, але кожен крок — це подія, на яку може підписатися будь-хто: роутинг, безпека, конвертація аргументів, обробка винятків. Зрозумійте цю схему, і більшість «магії» Symfony стане звичайними слухачами подій.

public/index.php
  → Kernel::handle(Request)
  → kernel.request       RouterListener знаходить маршрут, потім Firewall: хто користувач
  → kernel.controller
  → ArgumentResolver     Request, сутності, DTO
  → Контролер
      повернув Response     → kernel.response
      повернув не Response  → kernel.view → kernel.response
      кинув виняток         → kernel.exception → kernel.response
  → Response::send()
  → kernel.terminate
Крок Symfony Найближче в Magento Що там відбувається
public/index.php, Kernel pub/index.php, Bootstrap, App\Http::launch() Завантаження скомпільованого контейнера.
kernel.request: RouterListener (пріоритет 32) FrontController::dispatch(), RouterList::match() Маршрут записується в атрибути Request.
kernel.request: Firewall (пріоритет 8) area + сесія, плагін автентифікації адмінки Автентифікація, токен користувача.
kernel.controller controller_action_predispatch, плагіни на dispatch() Тут спрацьовують #[IsGranted], #[Cache].
ArgumentResolver немає; getParam() вручну Сутність за id, DTO з JSON, поточний користувач.
Контролер ActionInterface::execute() Ваш код.
kernel.view немає Перетворення не-Response на Response, наприклад #[Template].
kernel.response controller_front_send_response_before Заголовки, cookies, Web Profiler toolbar.
kernel.terminate немає Робота після відправки відповіді: логи, листи.
kernel.exception ExceptionHandler, noroute 404/403/500, сторінки помилок.

Подивитися всіх слухачів і їхні пріоритети: bin/console debug:event-dispatcher kernel.request.