Download the PHP package lingoda/domain-events without Composer
On this page you can find all versions of the php package lingoda/domain-events. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package domain-events
Domain Events Bundle
Installation
Bundle configuration
Usage
IMPORTANT NOTE: Never record domain events in doctrine lifecycle hooks!
Example of simple User entity that triggers a Domain Event.
Sample Domain Event
Sample User entity that records the event
In action
Dispatching domain events with Messenger Worker
First configure the outbox messenger transport
After that we can consume the Outbox table and dispatch domain events from it with the below command
Scheduling events
We can schedule Domain Events to be published in the future
Replacing/Re-scheduling events in the event_store
We can replace/re-schedule unpublished events by implementing the ReplaceableEventInterface
for the Domain Event
If you implement this interface, before the OutboxRecord
persister stores a new domain event, it will check if there is
any previously stored but unpublished events from the same entity id, if yes it will delete them and add the new one only.
Enriching Domain Events
While domain events should be immutable, sometimes it's inevitable that you need to enrich with additional information but you don't want to assign at creation time because the service is not accessible inside the entity.
You can listen to the PreAppendEvent
in a subscriber/listener that is dispatched right before the Domain Event gets
persisted. At this point you can enrich with additional information.
Simple example would be injecting and actorId which corresponds to the user id that is currently interacting with the app.
Testing
Install dev dependencies
Run tests
TODO
- Add functional tests
- Improve OutboxTransportFactory with additional options in the DSN
- Add instructions for doctrine mapping and routing DomainEvent
- Fix issues around Carbon serialization
All versions of domain-events with dependencies
doctrine/dbal Version ^3.4
doctrine/doctrine-bundle Version ^2.8
doctrine/orm Version ^2.15
nesbot/carbon Version ^2.71 || ^3.0
symfony/event-dispatcher Version ^6.4|^7.0
symfony/framework-bundle Version ^6.4|^7.0
symfony/lock Version ^6.4|^7.0
symfony/messenger Version ^6.4|^7.0
webmozart/assert Version ^1.10