docs(articles): From Magento to Symfony, a requalification guide grouped into sections
uk/articles/magento-to-symfony/basics/glossary.md
новий файл +56
−0
Словник термінів
Відповідники приблизні: де прямого аналога немає, у примітці сказано, що робити натомість.
| Magento 2 | Symfony | Примітка |
|---|---|---|
| Модуль: app/code/Vendor/Module, registration.php, module.xml | Namespace у src/; Bundle — лише для повторного використання | У застосунку бандли не пишуть. Код розкладають за доменами: src/Faq, src/Checkout. |
| module.xml |
config/bundles.php | Порядок бандлів рідко має значення. Flex дописує їх сам. |
| Розширення з Marketplace | Бандл через Composer + Flex-рецепт | Рецепт створює конфіг у config/packages і змінні в .env. |
| ObjectManager | Service Container | Компілюється в PHP-клас у var/cache. Брати сервіси з контейнера в коді не можна, лише через конструктор. |
| di.xml | config/services.yaml + атрибути | Автовайринг і автоконфігурація: більшість класів не потребує жодного рядка конфігу. |
| alias, #[AsAlias] | Якщо реалізація одна, alias створюється автоматично. | |
| virtualType | Окремий сервіс з власним id | Плюс іменований автовайринг: LoggerInterface $faqLogger. |
| arguments, bind, #[Autowire] | Скаляри, параметри, env, інші сервіси. | |
| shared="false" | shared: false | За замовчуванням сервіси спільні, як і в Magento. |
| Згенерована Factory | new для сутностей; власна фабрика для сервісів | Генерації фабрик немає. Сутність Doctrine створюють через new. |
| Згенерований Proxy | lazy: true, #[Autowire(lazy: true)] | Ліниві сервіси без окремого класу в коді. |
| Plugin before/after/around | Декоратор #[AsDecorator] або подія | Працює на рівні сервісу та інтерфейсу, а не будь-якого методу. |
| Масив об'єктів у di.xml (pool, list) | Теги + #[AutowireIterator] / #[AutowireLocator] | Реалізації реєструються самі через #[AutoconfigureTag]. |
| setup:di:compile | Компіляція контейнера, cache:warmup | У dev перебудовується сама при зміні файлів. |
| app/etc/env.php | .env, .env.local, змінні середовища | Справжні змінні середовища мають пріоритет над файлами. |
| app/etc/config.php (модулі) | config/bundles.php | Можна вмикати бандл лише для середовища: ['dev' => true]. |
| core_config_data, system.xml, ScopeConfig | Параметри, %env()%; своя таблиця за потреби | Адмін-налаштувань зі скоупами немає. |
| Режими developer / production | APP_ENV=dev / prod / test + APP_DEBUG | Окремий конфіг для середовища: when@prod у YAML. |
| Area: frontend, adminhtml, webapi_rest | Firewall + префікс маршрутів | Окремого «area» немає. Для CLI — просто команда. |
| routes.xml + Controller/Index/Index.php | #[Route] на методі контролера | Один клас може мати кілька дій. Можна робити invokable-контролер на дію. |
| ResultFactory: Page, Json, Redirect | Response, JsonResponse, RedirectResponse, $this->json() | Контролер повертає Response. |
| RequestInterface::getParam() | Request, #[MapQueryParameter], #[MapRequestPayload] | Аргументи контролера заповнюються автоматично. |
| UrlInterface::getUrl() | UrlGeneratorInterface | URL генерують за іменем маршруту. |
| URL rewrites, таблиця url_rewrite | Маршрути зі slug | Таблиці переписувань немає. SEO-URL — частина маршруту. |
| events.xml + ObserverInterface | #[AsEventListener], EventSubscriberInterface | Є пріоритети і зупинка поширення. |
| Ім'я події-рядок + масив даних | Клас події; FQCN як ім'я | Типізовані дані замість DataObject. |
| Model + ResourceModel + Collection | Entity + EntityManager + Repository | Data Mapper замість Active Record. |
| Repository + SearchCriteria | ServiceEntityRepository + QueryBuilder | Запити пишуть явними методами репозиторію. |
| $model->save() | persist() + flush() | flush() записує всі зміни, а не одну сутність. |
| _beforeSave / _afterSave | Doctrine lifecycle events, #[AsEntityListener] | Окремий диспетчер подій Doctrine. |
| db_schema.xml + whitelist | Атрибути мапінгу + Doctrine Migrations | Міграції імперативні та версіоновані. diff генерується з мапінгу. |
| Schema / Data patches | Migrations (схема), Fixtures (тестові дані) | Довідникові дані для prod теж кладуть у міграцію. |
| EAV | Колонки, JSON-колонки, окремі таблиці | Аналога немає, і зазвичай він не потрібен. |
| ResourceConnection, AdapterInterface | Doctrine DBAL Connection | Для сирого SQL і масових операцій. |
| i18n/*.csv, __() | Translation: XLIFF/YAML, TranslatorInterface | translation:extract збирає ключі. |
| Валідація в сервісі | Validator: #[Assert...] на DTO, #[MapRequestPayload] | Порушення повертаються клієнту як 422 зі списком помилок. |
| acl.xml, ADMIN_RESOURCE | Ролі, access_control, Voter, #[IsGranted] | Voter вирішує доступ до конкретного об'єкта. |
| Customer / admin session | Firewall, user provider, authenticator | Компонент Security. |
| Integration tokens, OAuth | access_token authenticator, JWT-бандл | Наприклад, lexik/jwt-authentication-bundle. |
| webapi.xml + service contracts | Контролери + Serializer або API Platform | Деталі — у розділі API і серіалізація. |
| Api/Data інтерфейси | DTO (readonly-класи) | #[MapRequestPayload] гідратує DTO з тіла запиту, Serializer — відповідь. |
| /swagger | OpenAPI: API Platform або NelmioApiDocBundle | Збирається з маршрутів, типів і атрибутів. |
| GraphQL: schema.graphqls + resolvers | API Platform GraphQL, overblog/graphql-bundle | Окремі бандли. |
| communication.xml + queue_*.xml | Messenger: повідомлення + обробник + routing | Один клас-DTO, один обробник, рядок у messenger.yaml. |
| crontab.xml | Scheduler: #[AsCronTask]; або системний cron + команда | Scheduler працює через воркер Messenger. |
| Cache types + теги | Cache pools + TagAwareCacheInterface | Пулів може бути скільки завгодно. |
| Full Page Cache, Varnish | HTTP-кеш: заголовки, HttpCache, Varnish + FOSHttpCacheBundle | FPC «з коробки» немає, є стандартний HTTP-кеш. |
| Logger через virtualType з handlers | Канали Monolog у monolog.yaml | Автовайринг за іменем: $faqLogger. |
| Integration tests, @magentoDataFixture | KernelTestCase, WebTestCase, Foundry | Тести бачать приватні сервіси через static::getContainer(). |
| Indexers, mview | Немає; Messenger, події Doctrine, cron | Денормалізацію будуєте явно. |