docs(articles): explain the project trees with tables instead of a dense list
uk/articles/magento-to-symfony/basics/structure.md
+25
−3
Структура проєкту
Новий проєкт: symfony new faq --webapp (Symfony CLI) або composer create-project symfony/skeleton faq для мінімального набору. Flex додає пакети разом із конфігом: composer require orm створить config/packages/doctrine.yaml і змінну DATABASE_URL.
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створюєте самі, і він не комітиться.
Що в дереві Magento
| Шлях | Що це |
|---|---|
registration.php, etc/module.xml |
Обов'язкові файли модуля. Решта тек з'являється, коли вона потрібна. |
app/etc/config.php |
Список увімкнених модулів. |
app/etc/env.php |
БД, кеш і ключі середовища. |
generated/ |
Згенеровані Factory, Proxy й Interceptor. |
Звідки береться дерево Symfony
| Шлях | Звідки |
|---|---|
bin/, config/, public/index.php, src/Kernel.php, src/Controller/ |
symfony/skeleton |
.env, .env.dev з APP_SECRET |
рецепт framework-bundle |
config/packages/doctrine.yaml, migrations/, src/Entity/, src/Repository/ |
composer require orm |
templates/ |
composer require twig |
tests/, .env.test |
composer require --dev symfony/test-pack |
src/Message/, src/MessageHandler/ |
make:message |
src/EventListener/ |
make:listener |
src/Security/Voter/ |
make:voter |
src/Dto/ |
домовленість проєкту |
.env.local |
створюєте самі, не комітиться |
Розкладка src/ за технічними шарами (Controller, Entity…) — лише стартовий шаблон. Для великого проєкту можна групувати за доменами (src/Faq/…, src/Catalog/…), фреймворк це не обмежує: services.yaml реєструє все в src/, а Doctrine шукає сутності там, де ви вкажете в doctrine.yaml.