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`.