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`.