Slide 26
Slide 26 text
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
*/
class User
{
// On stocke les évènements dans l'entité
protected $events = [];
public function enable()
{
if (self::STATUS_ENABLED !== $status) {
// L'évènement est émis par l'entité
$this->events[] = new UserEnabled($this->id, $this->email);
}
$this->status = self::STATUS_ENABLED;
}
/**
* Au besoin, utiliser les lifecycle callbacks (update, remove).
* @ORM\PreRemove
*/
public function onRemove()
{
$this->events[] = new UserRemoved($this->id, $this->name);
}
// Retourne et vide $events
public function popEvents(): array { /* ... */ }
}