predaddy / predaddy
Common DDD classes and utilities
Installs: 26 284
Dependents: 3
Suggesters: 0
Security: 0
Stars: 169
Watchers: 10
Forks: 6
Open Issues: 0
Requires
- php: >=7.1
- doctrine/annotations: ~1.1
- doctrine/cache: ~1.0
- lf4php/lf4php: ~5.0
- precore/precore: ~3.0
- trf4php/trf4php: ~2.0
Requires (Dev)
- jms/serializer: ~0.15
- lf4php/lf4php-log4php: ~3.0
- mf4php/mf4php: ~2.0
- phpunit/phpunit: 7.0.2
- satooshi/php-coveralls: ~2.0
Suggests
- jms/serializer: For serializing events and aggregates with JmsSerializer
- mf4php/mf4php: Use it and one of its implementation if you want to use Mf4PhpMessageBus (asynchronous event handling)
- predaddy/predaddy-doctrine-orm: Using Doctrine ORM to persist aggregates and events
- predaddy/predaddy-symfony-validator: To validate messages with Symfony Validator
- 4.0.x-dev
- 4.0.0
- 3.0.x-dev
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-RC3
- 3.0.0-RC2
- 3.0.0-RC1
- 3.0.0-beta2
- 3.0.0-beta1
- 2.2.x-dev
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.x-dev
- 2.1.1
- 2.1.0
- 2.0.x-dev
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-RC2
- 2.0.0-RC1
- 2.0.0-beta2
- 2.0.0-beta1
- 1.2.x-dev
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.0
- 1.0.x-dev
- 1.0.2
- 1.0.1
- 1.0.0
- dev-feature/make-php-7-1-compatible
- dev-master
- dev-lazy-created-handler
- dev-annotation-based
This package is not auto-updated.
Last update: 2024-09-28 15:06:28 UTC
README
It is a library which gives you some usable classes to be able to use common DDD patterns. Some predaddy components can be used in any projects regardless of the fact that you are using DDD or not. I have got several ideas from Google's Guava EventBus and Axon framework.
Some libraries are used which are just API libraries and you must care for their implementations:
- lf4php for logging. Without an implementation predaddy is not logging.
- trf4php for transaction management. In most cases you will need to use a trf4php implementation (eg. trf4php-doctrine)
Components
For more details see the components (click on the titles):
-
Message handling
It's an annotation based publish/subscribe implementation, can be used any projects even without DDD/CQRS/Event Sourcing.
-
CQRS and Event Sourcing
Complex solution for handling aggregates, based on the message handling component.
-
Presentation - finders, etc.
Common classes and interfaces for handling the read side. It also can be used in any applications.
-
Testing - helper for aggregate testing
Fixtures to ease aggregate testing.
Examples
You can find some small CLI examples in the sample directory.
A sample project is also available which shows how predaddy should be configured and used: https://github.com/szjani/predaddy-issuetracker-sample