Skip to content
This repository has been archived by the owner on Dec 18, 2020. It is now read-only.

gbprod/domain-event

Repository files navigation

Domain event

stability-deprecated

Build Status Scrutinizer Code Quality Code Coverage

Latest Stable Version Total Downloads Latest Unstable Version License

Library to manage domain events in a php DDD application.

Usage

Create a domain event

<?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;
    }
}

Raise your event

<?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)
        );
    }
}

Dispatch events

<?php

namespace GBProd\Acme\Repository;

use GBProd\DomainEvent\EventProvider;

class MyEntityRepository
{
    public function save(MyEntity $entity)
    {
        $this->persist($entity);
        
        $this->dispatcher->dispatch($entity);
    }
}

Requirements

  • PHP 5.5+

Installation

Using composer

composer require gbprod/domain-event

About

Library to manage domain events in a DDD application

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages