Services are core classes of any application, and keeping them well organized may be a real challenge. Except if you're working on a small RAD or POC project, your services will quickly grow as messy classes.
This package combines two useful patterns:
- CQRS which separates actions (commands) from data retrieval (queries) services.
- Chain of Responsibility which involves chains of middlewares to handle these commands and queries. Possibilities offered by middleware buses are endless and easily extensible.
It will help you to:
- Decouple read and write models.
- Wrap every service calls with generic behaviors: logging, queuing, security, asynchronous handling...
- Split your services and repositories into multiple classes (enforce Single Responsibility Principle).
This package requires PHP 7.4+ and Doctrine ORM 2.7+
Add it as Composer dependency:
$ composer require mediagone/cqrs-bus
CQRS Bus is licensed under MIT license. See LICENSE file.