diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 37a123d26..44b89cd2d 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3259,41 +3259,35 @@ class UnitOfWork implements PropertyChangedListener */ private function afterTransactionComplete() { - if ( ! $this->hasCache) { - return; - } - - foreach ($this->persisters as $persister) { - if ($persister instanceof CachedPersister) { - $persister->afterTransactionComplete(); - } - } - - foreach ($this->collectionPersisters as $persister) { - if ($persister instanceof CachedPersister) { - $persister->afterTransactionComplete(); - } - } + $this->performCallbackOnCachedPersister(function (CachedPersister $persister) { + $persister->afterTransactionComplete(); + }); } /** * Perform whatever processing is encapsulated here after completion of the rolled-back. */ private function afterTransactionRolledBack() + { + $this->performCallbackOnCachedPersister(function (CachedPersister $persister) { + $persister->afterTransactionRolledBack(); + }); + } + + /** + * Performs an action after the transaction. + * + * @param callable $callback + */ + private function performCallbackOnCachedPersister(callable $callback) { if ( ! $this->hasCache) { return; } - foreach ($this->persisters as $persister) { + foreach (array_merge($this->persisters, $this->collectionPersisters) as $persister) { if ($persister instanceof CachedPersister) { - $persister->afterTransactionRolledBack(); - } - } - - foreach ($this->collectionPersisters as $persister) { - if ($persister instanceof CachedPersister) { - $persister->afterTransactionRolledBack(); + $callback($persister); } } }