- Ajoute AggregateRoot dans Shared (domain events + pull pattern) - Manga extends AggregateRoot, devient vrai aggregate root DDD - Chapter passe de readonly à entité mutable avec MangaId VO - Manga expose les méthodes domaine pour toute mutation de chapitre : addChapter, updateChapterTitle/Volume/Pages, hideChapter, removeChapterPages - Supprime saveChapter/updateChapter/deleteChapter de MangaRepositoryInterface - save(Manga) gère désormais la persistance des chapitres via pull pattern - Tous les handlers/listeners passent par l'agrégat (plus d'accès direct) - phparkitect autorise AggregateRoot dans les couches Domain Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
22 lines
387 B
PHP
22 lines
387 B
PHP
<?php
|
|
|
|
namespace App\Domain\Shared\Domain\Model;
|
|
|
|
abstract class AggregateRoot
|
|
{
|
|
private array $domainEvents = [];
|
|
|
|
protected function recordEvent(object $event): void
|
|
{
|
|
$this->domainEvents[] = $event;
|
|
}
|
|
|
|
public function pullDomainEvents(): array
|
|
{
|
|
$events = $this->domainEvents;
|
|
$this->domainEvents = [];
|
|
|
|
return $events;
|
|
}
|
|
}
|