Intégration
phil/doctrine-behaviours$config->addFilter(SoftDeletedFilter::NAME, SoftDeletedFilter::class);
$manager = new EntityManager($connection, $config);
$events = $manager->getEventManager();
$events->addEventListener([Events::prePersist, Events::onFlush], new TimestampListener($clock));
$events->addEventListener([Events::prePersist, Events::onFlush], new BlameListener($resolver));
$events->addEventListener([Events::onFlush], new SoftDeleteListener($clock));
$events->addEventListener([Events::postPersist, Events::onFlush, Events::postFlush], new TreeListener());
$manager->getFilters()->enable(SoftDeletedFilter::NAME);
$tree = new Tree($manager);
Les autres comportements suivent de la même façon, chacun seulement si ses entités existent. Enregistrez
DeactivatedFilter comme le filtre de la suppression douce, et mappez src/Version avec l'AttributeDriver quand une
entité a des versions.
$config->addFilter(DeactivatedFilter::NAME, DeactivatedFilter::class);
$events->addEventListener([Events::prePersist, Events::onFlush], new DeactivationListener($clock));
$events->addEventListener([Events::prePersist], new OwnerListener($ownerResolver));
$events->addEventListener([Events::onFlush], new SlugListener($sluggers));
$events->addEventListener([Events::onFlush], new PositionListener());
$events->addEventListener([Events::onFlush], new VersionListener());
$events->addEventListener([Events::prePersist], new DatedIdentifierListener($clock));
$events->addEventListener([Events::loadClassMetadata], new TranslationListener());
$versions = new Versions($manager, $clock, $restoreGuard);
$positions = new Positions($manager);
$translations = new Translations($manager);
Enregistrez TranslationListener avant le chargement des premières métadonnées, pour que chaque table de traduction ait
son index.
PublicationListener écoute un workflow, pas Doctrine : voir Publication.
Chaque comportement est indépendant : n'enregistrez que les écouteurs des comportements qu'utilisent les entités. Un
BlameResolver propre à l'application nomme l'utilisateur d'une requête, d'une tâche ou d'une commande.