yuko / ddd-helper
common classes and interfaces to architect ddd
Requires
- php: >=7.4.0
This package is auto-updated.
Last update: 2025-06-17 22:02:48 UTC
README
Общие классы и интерфейсы для использования при проектировании ДДД сущностей
Почему в папке инфраструктуры - для использования в контекстах, чтобы каждый контекст мог их использовать без постоянного копипаста
- Model\AggregateRoot.php
Интерфейс, который должны имплементировать сущности-агрегаты. Только агрегаты должны иметь возможность релизить и записывать доменные ивенты, поэтому данный интерфейс имеет функцию releaseEvents, которую должны имплементировать сущности-агрегаты.
- Model\EventTrait.php
Trait с реализацией методов recordEvent и releaseEvents, подключается в сущности агрегаты, recordEvent вызываются по необходимости записи ивентов после изменения состояния сущности, releaseEvents вызывается после сохранения изменений состояния агрегата в базу
- Model\EntityNotFoundException.php
Доменный exception используется как доменное сообщение в бизнес-логике, NotFound очень важно, но могут быть и другие типы, например EntityAlreadyExists и.т.д
- Model\Flusher.php
Интерфейс варианта сохранения изменений сущности в базу на основе Unit of Work (например как у доктрины)
- Model\DomainEventDispatcher
Интерфейс реализации запуска ивентов после сохранения сущности агрегата в базу