Структура проєкту

← Структура проєкту

Ashterix

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.