knplabs/rad-domain-event

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

Provide RAD Domain Event component

Maintainers

👁 KnpLabs

Package info

github.com/KnpLabs/rad-domain-event

pkg:composer/knplabs/rad-domain-event

Statistics

Installs: 53 134

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 3

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

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT c7b4d9e1b108b75bc1a53d84565af447fd213707

  • KNP Labs <hello.woop@knplabs.com>

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