knplabs/rad-domain-event

This package is abandoned and no longer maintained. No replacement package was suggested.

Provide RAD Domain Event component

v2.1.1 2018-08-23 15:19 UTC

This package is auto-updated.

Last update: 2022-09-23 13:37:14 UTC


README

Unfortunately we decided to not maintain this project anymore (see why). If you want to mark another package as a replacement for this one please send an email to hello@knplabs.com.

Knp Rad Domain Event

Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

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' }