From 860ab19771c6b1d18c02d529f549f7bd0d1aba6a Mon Sep 17 00:00:00 2001 From: maryo Date: Sun, 23 Oct 2016 04:43:17 +0200 Subject: [PATCH] Simplified events sorting --- src/DoctrineDomainEventDispatcher.php | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/DoctrineDomainEventDispatcher.php b/src/DoctrineDomainEventDispatcher.php index b7cb2e5..fd4e6f8 100644 --- a/src/DoctrineDomainEventDispatcher.php +++ b/src/DoctrineDomainEventDispatcher.php @@ -35,17 +35,6 @@ public function getSubscribedEvents(): array return [Events::postFlush, Events::postRemove]; } - /** - * @param array $a - * @param array $b - * @return int - * @internal - */ - public function compareEventsOrder(array $a, array $b): int - { - return $a[0] <=> $b[0]; - } - /** * @param object $entity */ @@ -62,7 +51,7 @@ private function dispatchEventsOnTransactionEnd() return; } - $events = []; + $eventsByOrder = []; foreach ($this->entityManager->getUnitOfWork()->getIdentityMap() as $entities) { foreach ($entities as $entity) { @@ -72,19 +61,21 @@ private function dispatchEventsOnTransactionEnd() foreach ($this->eventProviders as $eventProvider) { foreach ($eventProvider->popEvents() as $order => $event) { - $events[] = [$order, $event]; + $eventsByOrder[$order][] = $event; } } - if (!$events) { + if (!$eventsByOrder) { return; } $this->clearChangeSets(); - usort($events, [$this, 'compareEventsOrder']); + ksort($eventsByOrder); - foreach ($events as list(, $event)) { - $this->entityManager->getEventManager()->dispatchEvent($event->name(), $event); + foreach ($eventsByOrder as $events) { + foreach ($events as $event) { + $this->entityManager->getEventManager()->dispatchEvent($event->name(), $event); + } } }