Реализация модуля (DDD, 4xLayers, CQRS-lite)
modules/Auto # корень модуля Auto
├── Application/ # прикладной слой use case логики
│ ├── Command/ # сценарии изменения состояния
│ │ └── CreateAuto/ # сценарий создания Auto
│ │ ├── CreateAutoCommand.php # входная команда create use case (DTO)
│ │ └── CreateAutoHandler.php # обработчик команды создания
│ └── Query/ # сценарии чтения данных
│ ├── GetAuto/ # сценарий чтения Auto
│ │ ├── GetAutoQuery.php # DTO чтения Auto
│ │ └── GetAutoHandler.php # обработчик чтения одной записи
├── Contracts/ # директория контрактов модуля
│ ├── Ports/ # порты для реализации в других модулях
│ │ └── AutoPort.php # контракт для реализации в ACL другого модуля
│ └── Public/ # публичные контракты модуля наружу
│ └── AutoReader.php # публичный контракт модуля
├── Domain/ # предметная модель без инфраструктуры
│ ├── Entity/ # доменные сущности
│ │ └── Auto.php # доменная сущность Auto
│ ├── Enum/ # доменные перечисления
│ ├── Repository/ # доменные контракты репозиториев
│ │ └── AutoRepository.php # контракт записи Auto
│ └── ValueObject/ # доменные value objects
├── Infrastructure/ # технические реализации модуля
│ ├── ACL/ # интеграция с внешними контекстами
│ └── Persistence/ # хранение и доступ к данным
│ ├── Mapper/ # маппинг entity <-> model
│ │ └── AutoMapper.php # преобразование Auto между слоями
│ ├── Migrations/ # миграции таблиц модуля
│ │ └── 0000_00_00_000000_create_autos_table.php # создание таблицы autos
│ ├── Models/ # Eloquent-модели
│ │ └── Auto.php # Eloquent-модель Auto
│ ├── EloquentAutoRepository.php # реализация доменного AutoRepository
│ └── EloquentAutoReader.php # реализация Contracts/Public/AutoReader.php
├── Presentation/ # точки входа в модуль
│ ├── Http/ # HTTP модуля (endpoints)
│ │ ├── CreateAutoAction.php # HTTP action для POST /api/autos
│ │ └── routes.php # маршруты модуля
│ └── Console/ # консольные entrypoints модуля
├── Providers/ # service provider модуля
│ └── AutoServiceProvider.php # биндинги и подключение миграций
└── Tests/ # тесты модуля
└── Feature/ # feature/API тесты
└── AutoApiTest.php # проверка через HTTP API ВНЕШНИЙ МИР (UI, Сеть)
┌─────────────────────────────────────────────────────────────┐
│ PRESENTATION (Контроллеры, Консоль) │
└──────────────┬───────────────────────────────┬──────────────┘
│ (Вызывает Command) │ (Вызывает Query)
▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ APPLICATION (Use Cases / Сценарии) │
│ │
│ [Поток Команд / Запись] [Поток Запросов / Чтение] │
│ - Handlers - Handlers │
│ - Интерфейсы Репозиториев (DIP) - Интерфейсы Выборок (DIP) │
└──────────────┬───────────────────────────────┼──────────────┘
│ (Управляет) │
▼ │ (В обход Домена)
┌──────────────────────────────┐ │
│ DOMAIN (Сердце системы) │ │
│ - Entities & Aggregates │ │
│ - Value Objects │ │
└──────────────▲───────────────┘ │
│ │
│ (Реализует интерфейсы через DIP)
┌──────────────┴───────────────────────────────▼──────────────┐
│ INFRASTRUCTURE (Инструменты и реализации) │
│ - Реализация репозиториев (PostgreSQL, ORM) │
│ - Прямые SQL-запросы для чтений (Dapper, сырой SQL) │
└─────────────────────────────────────────────────────────────┘