Чистая архитектура на Yii2

Enterprise-решение на PHP 8.4 и Yii 2: Clean Architecture, DDD, CQRS, HTMX, 100% Code Coverage и 100% Infection MSI.

PHP 8.4 Coverage 100% MSI 100%
Yii2 Clean Architecture & DDD Showcase Banner
595
Тестов пройдено
1367
Assertions
100%
Code Coverage
100%
Mutation Score

Ключевые особенности

🏛️

Clean Architecture

Полное разделение бизнес-логики и фреймворка: изоляция через Use Cases и порты.

CQRS & CQS

Разделение команд на запись и запросов на чтение для максимальной производительности.

📨

Domain Events

Асинхронное взаимодействие через события и очереди: паттерн Fan-Out для рассылок.

🛡️

Idempotency

Защита от повторных запросов на уровне Middleware: безопасность операций.

🔍

Гибридный поиск

Полнотекстовый поиск с автоматическим откатом к LIKE для надежности.

🚀

HTMX UI

Бесконечный скролл и реактивный интерфейс без единой строчки кастомного JS.

Слой за слоем

Традиционный Yii2
Наша архитектура
Толстые модели & AR Rich Domain Entities
Логика в контроллерах Isolated Use Cases
Service Locator Strict Dependency Injection
Магические события Explicit Domain Events
Сложное тестирование 100% Testable Design

Осознанные компромиссы

🔢

Integer ID > UUID

UUID увеличивают размер индексов. Мы выбрали производительность и читаемость простых ID.

📉

No Outbox

Transactional Outbox - это сложно. Мы используем afterCommit, жертвуя 0.01% надежности ради простоты.

🛠️

ActiveRecord

AR - не антипаттерн, если он заперт в инфраструктуре. Используем его мощь, не загрязняя домен.

📦

Grouped Handlers

Вместо 10 мелких классов - один сплоченный обработчик. High Cohesion важнее слепого SRP.

🖥️

Native Web UI

ActiveForm и виджеты Yii2 в представлении. Это экономит время, при этом не протекая в бизнес-логику.

Smart Validation

Простые проверки - в форме, бизнес-правила - в домене. Избегаем дублирования и "взрыва" классов.

Технологический стек

PHP 8.4
Yii 2.0
MySQL / PgSQL
Redis
Docker
Infection PHP
PHPStan Lvl 9
HTMX 2.0
Rector
Deptrac

Бескомпромиссное качество

Мы не просто пишем тесты - мы проверяем их качество с помощью Mutation Testing (Infection). Если мутант выживает - мы меняем тест или код. Это гарантирует, что каждый ассерт имеет значение.

  • Unit Tests: тестирование домена в полной изоляции.
  • Integration Tests: проверка работы с реальными БД и очередями.
  • E2E Tests: симуляция действий пользователя в браузере.
100% MSI