Library to manage domain events in a php DDD application.
<?php
namespace GBProd\Acme\Event;
use GBProd\DomainEvent\DomainEvent;
class SomethingHappenedEvent implements DomainEvent
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function getAggregateId()
{
return $id;
}
}
<?php
namespace GBProd\Acme\Entity;
use GBProd\DomainEvent\EventProvider;
use GBProd\DomainEvent\EventProviderTrait;
final class MyEntity implements EventProvider
{
use EventProviderTrait;
public function doSomething()
{
$this->raise(
new SomethingHappenedEvent($this->id)
);
}
}
<?php
namespace GBProd\Acme\Repository;
use GBProd\DomainEvent\EventProvider;
class MyEntityRepository
{
public function save(MyEntity $entity)
{
$this->persist($entity);
$this->dispatcher->dispatch($entity);
}
}
- PHP 5.5+
composer require gbprod/domain-event