docs(articles): Magento and Symfony project trees with hierarchy, checked against the official structure
uk/articles/magento-to-symfony/basics/structure.md
+97
−48
Структура проєкту
Новий проєкт: symfony new faq --webapp (Symfony CLI) або composer create-project symfony/skeleton faq для мінімального набору. Flex додає пакети разом із конфігом: composer require orm створить config/packages/doctrine.yaml і змінну DATABASE_URL.
Magento · дерево модуля
app/
code/Vendor/Faq/
registration.php
etc
module.xml
di.xml
events.xml
etc
frontend
routes.xml
adminhtml
system.xml
menu.xml
acl.xml
webapi.xml
crontab.xml
db_schema.xml
Api
Data
Model/ Model/ResourceModel/
Controller/ Block/ ViewModel/
view/frontend/layout/ templates/ web/
etc/env.php config.php
bin/magento
generated/
pub/index.php pub/static/
var/ vendor/
Symfony · дерево застосунку
bin/console
config/
bundles.php
packages/ doctrine.yaml security.yaml
messenger.yaml monolog.yaml …
routes.yaml
services.yaml
migrations/
public/index.php
src/
Kernel.php
Controller/ Entity/ Repository/
Dto/ Message/ MessageHandler/
EventListener/ Security/
translations/
tests/
var/cache/ var/log/
vendor/
.env .env.local .env.test
Magento · дерево проєкту з модулем
<magento-root>/
├── app/
│ ├── code/
│ │ └── Vendor/
│ │ └── Faq/
│ │ ├── registration.php
│ │ ├── composer.json
│ │ ├── Api/
│ │ │ └── Data/
│ │ ├── Block/
│ │ ├── Controller/
│ │ ├── Model/
│ │ │ └── ResourceModel/
│ │ ├── Observer/
│ │ ├── Plugin/
│ │ ├── Setup/
│ │ ├── ViewModel/
│ │ ├── etc/
│ │ │ ├── module.xml
│ │ │ ├── di.xml
│ │ │ ├── events.xml
│ │ │ ├── acl.xml
│ │ │ ├── webapi.xml
│ │ │ ├── crontab.xml
│ │ │ ├── db_schema.xml
│ │ │ ├── frontend/
│ │ │ │ └── routes.xml
│ │ │ └── adminhtml/
│ │ │ ├── menu.xml
│ │ │ └── system.xml
│ │ ├── i18n/
│ │ └── view/
│ │ └── frontend/
│ │ ├── layout/
│ │ ├── templates/
│ │ └── web/
│ └── etc/
│ ├── config.php
│ └── env.php
├── bin/
│ └── magento
├── generated/
├── pub/
│ ├── index.php
│ └── static/
├── var/
└── vendor/
Symfony · дерево класичного WEB застосунку
<project>/
├── bin/
│ └── console
├── config/
│ ├── bundles.php
│ ├── preload.php
│ ├── routes.yaml
│ ├── services.yaml
│ ├── packages/
│ │ ├── cache.yaml
│ │ ├── framework.yaml
│ │ ├── doctrine.yaml
│ │ ├── messenger.yaml
│ │ ├── monolog.yaml
│ │ └── security.yaml
│ └── routes/
│ └── framework.yaml
├── migrations/
├── public/
│ └── index.php
├── src/
│ ├── Kernel.php
│ ├── Controller/
│ ├── Entity/
│ ├── Repository/
│ ├── EventListener/
│ ├── Message/
│ ├── MessageHandler/
│ ├── Security/
│ └── Dto/
├── templates/
├── translations/
├── tests/
├── var/
│ ├── cache/
│ └── log/
├── vendor/
├── .env
├── .env.dev
├── .env.test
├── .env.local
├── composer.json
└── symfony.lock
- Magento: обов'язкові лише
registration.phpіetc/module.xml, решта тек модуля з'являється, коли вона потрібна.app/etc/config.php— список увімкнених модулів,env.php— БД, кеш і ключі середовища,generated/— згенеровані Factory, Proxy й Interceptor. - Symfony:
symfony/skeletonстворюєbin/,config/(bundles.php,preload.php,routes.yaml,services.yaml,packages/cache.yaml,packages/framework.yaml),public/index.php,src/Kernel.phpіsrc/Controller/,.envі.env.devзAPP_SECRET. Інше додають пакети (Flex-рецепти:doctrine.yaml,migrations/,src/Entity/,templates/,.env.test) і команди MakerBundle (make:message,make:listener,make:voter).Dto/— домовленість проєкту, а.env.localстворюєте самі, і він не комітиться.
Розкладка src/ за технічними шарами (Controller, Entity…) — лише стартовий шаблон. Для великого проєкту можна групувати за доменами (src/Faq/…, src/Catalog/…), фреймворк це не обмежує: services.yaml реєструє все в src/, а Doctrine шукає сутності там, де ви вкажете в doctrine.yaml.