Skip to main content

Pseudo Magic Method

The interface DomainEventEmitterInterface implemented by your entities and the corresponding DomainEventEmitterTrait add a pseudo magic method __remove().

The __remove() method is called when the entity is about to be removed from the database. You can use this method to record a 'removed' event.

use Rekalogika\Contracts\DomainEvent\DomainEventEmitterInterface;
use Rekalogika\Contracts\DomainEvent\DomainEventEmitterTrait;

class Post implements DomainEventEmitterInterface
{
use DomainEventEmitterTrait;

// ...

public function __remove()
{
$this->recordEvent(new PostRemoved($this->id));
}
}

This mechanism is devised because otherwise the entity cannot possibly know if it is being removed from the persistence layer.