macs / rad-domain-event
Provide RAD Domain Event component
v3.0.0
2020-03-18 01:47 UTC
Requires
- php: *
- doctrine/orm: @stable
- symfony/config: @stable
- symfony/dependency-injection: @stable
- symfony/http-kernel: @stable
Requires (Dev)
- phpspec/phpspec: @stable
This package is not auto-updated.
Last update: 2024-12-19 23:21:31 UTC
README
A lightweight domain event pattern implementation for Doctrine2.
Official maintainers:
Installation
With composer :
$ composer require knplabs/rad-domain-event
If you are using Symfony you can update your app/AppKernel.php
file:
public function registerBundles() { $bundles = array( // bundles here ... new Knp\Rad\DomainEvent\Bundle\DomainEventBundle(); ); }
Usage
Setup your entity
First, make sure your entity implements the Provider interface and uses the ProviderTrait.
use Knp\Rad\DomainEvent; class MyEntity implements DomainEvent\Provider { use DomainEvent\ProviderTrait; }
Raise event
Trigger any event from your entity, through the raise
method.
It will be turned into a Knp\Rad\DomainEvent\Event object and dispatched once your entity has been flushed.
use Knp\Rad\DomainEvent; class MyEntity implements DomainEvent\Provider { // ... public function myFunction($arg) { // your function behavior $this->raise('myEventName', ['anyKey' => $anyValue]); } }
Listen to this event
use Knp\Rad\DomainEvent\Event; class MyListener { public function onMyEventName(Event $event) { // your function behavior } }
Then, of course, register your listener.
app.event_listener.my_event_listener: class: App\EventListener\MyEventListener tags: - { name: kernel.event_listener, event: myEventName, method: 'onMyEventName' }