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

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

Ashterix

docs(articles): Magento and Symfony project trees with hierarchy, checked against the official structure

uk/articles/magento-to-symfony/basics/structure.md +97 −48

4 4
5 5 ::::columns
6 6 :::col
7 − **Magento** · дерево модуля
7 + **Magento** · дерево проєкту з модулем
8 8
9 9 ```text
10 − app/
11 − code/Vendor/Faq/
12 − registration.php
13 − etc
14 − module.xml
15 − di.xml
16 − events.xml
17 − etc
18 − frontend
19 − routes.xml
20 − adminhtml
21 − system.xml
22 − menu.xml
23 − acl.xml
24 − webapi.xml
25 − crontab.xml
26 − db_schema.xml
27 − Api
28 − Data
29 − Model/ Model/ResourceModel/
30 − Controller/ Block/ ViewModel/
31 − view/frontend/layout/ templates/ web/
32 − etc/env.php config.php
33 − bin/magento
34 − generated/
35 − pub/index.php pub/static/
36 − var/ vendor/
10 + <magento-root>/
11 + ├── app/
12 + │ ├── code/
13 + │ │ └── Vendor/
14 + │ │ └── Faq/
15 + │ │ ├── registration.php
16 + │ │ ├── composer.json
17 + │ │ ├── Api/
18 + │ │ │ └── Data/
19 + │ │ ├── Block/
20 + │ │ ├── Controller/
21 + │ │ ├── Model/
22 + │ │ │ └── ResourceModel/
23 + │ │ ├── Observer/
24 + │ │ ├── Plugin/
25 + │ │ ├── Setup/
26 + │ │ ├── ViewModel/
27 + │ │ ├── etc/
28 + │ │ │ ├── module.xml
29 + │ │ │ ├── di.xml
30 + │ │ │ ├── events.xml
31 + │ │ │ ├── acl.xml
32 + │ │ │ ├── webapi.xml
33 + │ │ │ ├── crontab.xml
34 + │ │ │ ├── db_schema.xml
35 + │ │ │ ├── frontend/
36 + │ │ │ │ └── routes.xml
37 + │ │ │ └── adminhtml/
38 + │ │ │ ├── menu.xml
39 + │ │ │ └── system.xml
40 + │ │ ├── i18n/
41 + │ │ └── view/
42 + │ │ └── frontend/
43 + │ │ ├── layout/
44 + │ │ ├── templates/
45 + │ │ └── web/
46 + │ └── etc/
47 + │ ├── config.php
48 + │ └── env.php
49 + ├── bin/
50 + │ └── magento
51 + ├── generated/
52 + ├── pub/
53 + │ ├── index.php
54 + │ └── static/
55 + ├── var/
56 + └── vendor/
37 57 ```
38 58 :::
39 59 :::col
40 − **Symfony** · дерево застосунку
60 + **Symfony** · дерево класичного WEB застосунку
41 61
42 62 ```text
43 − bin/console
44 − config/
45 − bundles.php
46 − packages/ doctrine.yaml security.yaml
47 − messenger.yaml monolog.yaml …
48 − routes.yaml
49 − services.yaml
50 − migrations/
51 − public/index.php
52 − src/
53 − Kernel.php
54 − Controller/ Entity/ Repository/
55 − Dto/ Message/ MessageHandler/
56 − EventListener/ Security/
57 − translations/
58 − tests/
59 − var/cache/ var/log/
60 − vendor/
61 − .env .env.local .env.test
63 + <project>/
64 + ├── bin/
65 + │ └── console
66 + ├── config/
67 + │ ├── bundles.php
68 + │ ├── preload.php
69 + │ ├── routes.yaml
70 + │ ├── services.yaml
71 + │ ├── packages/
72 + │ │ ├── cache.yaml
73 + │ │ ├── framework.yaml
74 + │ │ ├── doctrine.yaml
75 + │ │ ├── messenger.yaml
76 + │ │ ├── monolog.yaml
77 + │ │ └── security.yaml
78 + │ └── routes/
79 + │ └── framework.yaml
80 + ├── migrations/
81 + ├── public/
82 + │ └── index.php
83 + ├── src/
84 + │ ├── Kernel.php
85 + │ ├── Controller/
86 + │ ├── Entity/
87 + │ ├── Repository/
88 + │ ├── EventListener/
89 + │ ├── Message/
90 + │ ├── MessageHandler/
91 + │ ├── Security/
92 + │ └── Dto/
93 + ├── templates/
94 + ├── translations/
95 + ├── tests/
96 + ├── var/
97 + │ ├── cache/
98 + │ └── log/
99 + ├── vendor/
100 + ├── .env
101 + ├── .env.dev
102 + ├── .env.test
103 + ├── .env.local
104 + ├── composer.json
105 + └── symfony.lock
62 106 ```
63 107 :::
64 108 ::::
109 +
110 + - **Magento:** обов'язкові лише `registration.php` і `etc/module.xml`, решта тек модуля з'являється, коли вона потрібна. `app/etc/config.php` — список увімкнених модулів, `env.php` — БД, кеш і ключі середовища, `generated/` — згенеровані Factory, Proxy й Interceptor.
111 + - **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` створюєте самі, і він не комітиться.
112 +
113 + Джерела: [структура проєкту Symfony](https://symfony.com/doc/current/page_creation.html#checking-out-the-project-structure), [рецепт framework-bundle](https://github.com/symfony/recipes/tree/main/symfony/framework-bundle/7.4), [структура модуля Adobe Commerce](https://developer.adobe.com/commerce/php/development/build/component-file-structure).
65 114
66 115 Розкладка `src/` за технічними шарами (Controller, Entity…) — лише стартовий шаблон. Для великого проєкту можна групувати за доменами (`src/Faq/…`, `src/Catalog/…`), фреймворк це не обмежує: `services.yaml` реєструє все в `src/`, а Doctrine шукає сутності там, де ви вкажете в `doctrine.yaml`.