docs(articles): From Magento to Symfony, a requalification guide grouped into sections
uk/articles/magento-to-symfony/basics/mindset.md
новий файл +27
−0
1
+
# Зміна мислення
2
+
3
+
Magento — готовий продукт, який ви розширюєте, не торкаючись ядра. Тому там стільки механізмів втручання: плагіни на будь-який публічний метод, preference, layout XML, EAV, адмін-конфіг зі скоупами.
4
+
5
+
Symfony — набір компонентів, з яких ви збираєте власний застосунок. Ядра як продукту немає: код у `src/` і є застосунок, ви ним володієте і просто змінюєте його. Тому механізмів втручання значно менше, а поведінка явніша: що ви бачите в конструкторі й конфігурації, те й працює.
6
+
7
+
:::info subtitle="Головна думка"
8
+
Більшість магентівських «як мені перехопити X» у Symfony перетворюються на «просто змініть свій код». Перехоплення потрібне лише для коду з vendor/, і для нього є три інструменти: подія, декоратор, перевизначення сервісу.
9
+
:::
10
+
11
+
## Переноситься майже без змін
12
+
13
+
- Впровадження залежностей через конструктор, програмування на інтерфейсах. Magento вас цьому навчила, Symfony це винагороджує.
14
+
- Composer, PSR-4, `Psr\Log\LoggerInterface` і Monolog — ті самі.
15
+
- `bin/magento` побудований на Symfony Console. Клас команди виглядає майже однаково.
16
+
- Мислення подіями та спостерігачами.
17
+
- Черги повідомлень, ретраї, окремі воркери.
18
+
- PHPUnit, PHPStan, PHP-CS-Fixer.
19
+
20
+
## Треба відучитися
21
+
22
+
- ObjectManager і згенерований код: `Factory`, `Proxy`, `Interceptor` у `generated/`.
23
+
- `getData()`/`setData()`, `DataObject` і магічні геттери.
24
+
- Плагіни на будь-який метод будь-якого класу.
25
+
- XML на все. У Symfony більшість конфігурації — PHP-атрибути поруч із кодом, решта — YAML.
26
+
- Інтерфейс у `Api/Data` для кожної сутності. Service contracts тут не обов'язкові.
27
+
- EAV, скоупи store/website, адмін-налаштування, індексатори, режими. Їх немає, і будувати їх без реальної потреби не варто.