docs(articles): From Magento to Symfony, a requalification guide grouped into sections
uk/articles/magento-to-symfony/basics/mindset.md
новий файл +27
−0
Зміна мислення
Magento — готовий продукт, який ви розширюєте, не торкаючись ядра. Тому там стільки механізмів втручання: плагіни на будь-який публічний метод, preference, layout XML, EAV, адмін-конфіг зі скоупами.
Symfony — набір компонентів, з яких ви збираєте власний застосунок. Ядра як продукту немає: код у src/ і є застосунок, ви ним володієте і просто змінюєте його. Тому механізмів втручання значно менше, а поведінка явніша: що ви бачите в конструкторі й конфігурації, те й працює.
Більшість магентівських «як мені перехопити X» у Symfony перетворюються на «просто змініть свій код». Перехоплення потрібне лише для коду з vendor/, і для нього є три інструменти: подія, декоратор, перевизначення сервісу.
Переноситься майже без змін
- Впровадження залежностей через конструктор, програмування на інтерфейсах. Magento вас цьому навчила, Symfony це винагороджує.
- Composer, PSR-4,
Psr\Log\LoggerInterfaceі Monolog — ті самі. bin/magentoпобудований на Symfony Console. Клас команди виглядає майже однаково.- Мислення подіями та спостерігачами.
- Черги повідомлень, ретраї, окремі воркери.
- PHPUnit, PHPStan, PHP-CS-Fixer.
Треба відучитися
- ObjectManager і згенерований код:
Factory,Proxy,Interceptorуgenerated/. getData()/setData(),DataObjectі магічні геттери.- Плагіни на будь-який метод будь-якого класу.
- XML на все. У Symfony більшість конфігурації — PHP-атрибути поруч із кодом, решта — YAML.
- Інтерфейс у
Api/Dataдля кожної сутності. Service contracts тут не обов'язкові. - EAV, скоупи store/website, адмін-налаштування, індексатори, режими. Їх немає, і будувати їх без реальної потреби не варто.