From c337f8f5c70617e9cdf53229568a62264e099a38 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 30 Nov 2015 16:22:11 +0100 Subject: [PATCH 1/4] DDC-4022 deduplication of internal UnitOfWork methods the methods UnitOfWork#afterTransactionRolledBack() and UnitOfWork#afterTransactionComplete do almost the same, so it can be abstracted into another private method. --- lib/Doctrine/ORM/UnitOfWork.php | 42 +++++++++++++-------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 37a123d26..1652d4a1e 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3259,21 +3259,9 @@ 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->doAfterTransaction(function (CachedPersister $persister) { + $persister->afterTransactionComplete(); + }); } /** @@ -3281,19 +3269,23 @@ class UnitOfWork implements PropertyChangedListener */ private function afterTransactionRolledBack() { - if ( ! $this->hasCache) { + $this->doAfterTransaction(function (CachedPersister $persister) { + $persister->afterTransactionRolledBack(); + }); + } + + /** + * Performs an action after the transaction. + */ + private function doAfterTransaction(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(); + call_user_func($callback, $persister); } } } From 33476d8c3402eccf8878eb1d6d926491e0acaf2a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 30 Nov 2015 17:04:12 +0100 Subject: [PATCH 2/4] DDC-4022 minor improvements --- lib/Doctrine/ORM/UnitOfWork.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 1652d4a1e..15e0c9eab 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3273,16 +3273,18 @@ class UnitOfWork implements PropertyChangedListener $persister->afterTransactionRolledBack(); }); } - + /** * Performs an action after the transaction. + * + * @param callable $callback */ private function doAfterTransaction(callable $callback) { - if (!$this->hasCache) { + if ( ! $this->hasCache) { return; } - + foreach (array_merge($this->persisters, $this->collectionPersisters) as $persister) { if ($persister instanceof CachedPersister) { call_user_func($callback, $persister); From 11f9b00d535bcbcd5c89230fb088d8d75a598fe4 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 30 Nov 2015 17:12:49 +0100 Subject: [PATCH 3/4] DDC-4022 method naming --- lib/Doctrine/ORM/UnitOfWork.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 15e0c9eab..456055493 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3259,7 +3259,7 @@ class UnitOfWork implements PropertyChangedListener */ private function afterTransactionComplete() { - $this->doAfterTransaction(function (CachedPersister $persister) { + $this->performCallbackOnCachedPersister(function (CachedPersister $persister) { $persister->afterTransactionComplete(); }); } @@ -3269,7 +3269,7 @@ class UnitOfWork implements PropertyChangedListener */ private function afterTransactionRolledBack() { - $this->doAfterTransaction(function (CachedPersister $persister) { + $this->performCallbackOnCachedPersister(function (CachedPersister $persister) { $persister->afterTransactionRolledBack(); }); } @@ -3279,7 +3279,7 @@ class UnitOfWork implements PropertyChangedListener * * @param callable $callback */ - private function doAfterTransaction(callable $callback) + private function performCallbackOnCachedPersister(callable $callback) { if ( ! $this->hasCache) { return; From f840f0d464ab1de5068968c020001d09daf685f1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 1 Dec 2015 19:03:00 +0100 Subject: [PATCH 4/4] DDC-4022 execute callback parameter directly instead of using call_user_func --- lib/Doctrine/ORM/UnitOfWork.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 456055493..44b89cd2d 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -3287,7 +3287,7 @@ class UnitOfWork implements PropertyChangedListener foreach (array_merge($this->persisters, $this->collectionPersisters) as $persister) { if ($persister instanceof CachedPersister) { - call_user_func($callback, $persister); + $callback($persister); } } }