Зміна мислення

← Зміна мислення

Ashterix

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, адмін-налаштування, індексатори, режими. Їх немає, і будувати їх без реальної потреби не варто.