Життя запиту

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

Ashterix

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

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

1 + # Життя запиту
2 +
3 + У Magento запит проходить FrontController, список роутерів і `execute()` дії. У Symfony `HttpKernel` виконує той самий шлях, але кожен крок — це подія, на яку може підписатися будь-хто: роутинг, безпека, конвертація аргументів, обробка винятків. Зрозумійте цю схему, і більшість «магії» Symfony стане звичайними слухачами подій.
4 +
5 + ```text
6 + public/index.php
7 + → Kernel::handle(Request)
8 + → kernel.request RouterListener знаходить маршрут, потім Firewall: хто користувач
9 + → kernel.controller
10 + → ArgumentResolver Request, сутності, DTO
11 + → Контролер
12 + повернув Response → kernel.response
13 + повернув не Response → kernel.view → kernel.response
14 + кинув виняток → kernel.exception → kernel.response
15 + → Response::send()
16 + → kernel.terminate
17 + ```
18 +
19 + | Крок Symfony | Найближче в Magento | Що там відбувається |
20 + |---|---|---|
21 + | public/index.php, Kernel | pub/index.php, Bootstrap, App\Http::launch() | Завантаження скомпільованого контейнера. |
22 + | kernel.request: RouterListener (пріоритет 32) | FrontController::dispatch(), RouterList::match() | Маршрут записується в атрибути Request. |
23 + | kernel.request: Firewall (пріоритет 8) | area + сесія, плагін автентифікації адмінки | Автентифікація, токен користувача. |
24 + | kernel.controller | controller_action_predispatch, плагіни на dispatch() | Тут спрацьовують #[IsGranted], #[Cache]. |
25 + | ArgumentResolver | немає; getParam() вручну | Сутність за id, DTO з JSON, поточний користувач. |
26 + | Контролер | ActionInterface::execute() | Ваш код. |
27 + | kernel.view | немає | Перетворення не-Response на Response, наприклад #[Template]. |
28 + | kernel.response | controller_front_send_response_before | Заголовки, cookies, Web Profiler toolbar. |
29 + | kernel.terminate | немає | Робота після відправки відповіді: логи, листи. |
30 + | kernel.exception | ExceptionHandler, noroute | 404/403/500, сторінки помилок. |
31 +
32 + Подивитися всіх слухачів і їхні пріоритети: `bin/console debug:event-dispatcher kernel.request`.