The League of Extraordinary Packages

Our Packages:

Presented by The League of Extraordinary Packages

Versions:

Getting Started

Emitter

Events

Listeners

Generator

Generator Trait

The GeneratorTrait provides an interface to record events and release them at a later time.

Implementation Example

use League\Event\Generator;

class User
{
    use Generator;

    public function updateAddress(Address $address)
    {
        $this->address = $address;
        $this->addEvent(new UserAddressWasChanged($this, $address));
    }
}

$user = new User;
$user->updateAddress(new Address(...));
$events = $user->releaseEvents();
$emitter->emitBatch($events);

When you prefer a more expressive syntax you can alter the addEvent method name like so:

class User
{
    use Generator {
        addEvent as recordThat;
    }

    public function updateAddress(Address $address)
    {
        $this->address = $address;
        $this->recordThat(new UserAddressWasChanged($this, $address));
    }
}