Как сделать Modulith в Symfony
Modulith — архитектурный стиль, при котором приложение остаётся монолитом, но код внутри разбит на модули (подпапки) по доменам.
Классическая структура проектов выглядит так:
├── src ├── Command ├── Controller │ ├── Product │ └── User ├── Doctrine ├── Entity │ ├── Product.php │ └── User.php ├── Message ├── MessageHandler └── Kernel.php
Структура modulith в Symfony выглядела б так:
├── src ├── Product │ ├── Command │ ├── Controller │ ├── Doctrine │ ├── Entity │ ├── Message │ └── MessageHandler ├── User │ ├── Controller │ └── Entity └── Kernel.php
Разница в том, что в modulith каждый модуль (например Product, User) содержит все компоненты в своей папке, а не по всему проекту.
Если нужна доработка условной корзины, вы сразу знаете где находится весь код отвечающий за корзину, меньше конфликтов при слиянии
Вдобавок исчезают портянки файлов, когда открываете Entity, а там 30 файлов в столбик
Часто самая большая сложность возникает у людей при конфигурации модулей. Ничто нам не мешает запихать всю конфигурацию в один общий файл, например config/services.yaml, но из-за этого файл быстро станет раздуваться, что снизит его поддерживаемость и в нем будет единая точка связности модулей.
Поэтому конфигурацию модулей лучше выносить в сами модули













