From f2da5bc93efd95d546f5396e8489ddaafef006a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 19 Feb 2018 11:05:30 +0100 Subject: [PATCH] Extract private method to retrieve discriminator values --- .../Internal/Hydration/AbstractHydrator.php | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php index 144fe8257..5fe4fa1e5 100644 --- a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php +++ b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php @@ -396,21 +396,12 @@ abstract class AbstractHydrator // the current discriminator value must be saved in order to disambiguate fields hydration, // should there be field name collisions if ($classMetadata->parentClasses && isset($this->_rsm->discriminatorColumns[$ownerMap])) { - $discriminatorValues = array_map( - function (string $subClass) : string { - return (string) $this->getClassMetadata($subClass)->discriminatorValue; - }, - $classMetadata->subClasses - ); - - $discriminatorValues[] = (string) $classMetadata->discriminatorValue; - return $this->_cache[$key] = \array_merge( $columnInfo, [ 'discriminatorColumn' => $this->_rsm->discriminatorColumns[$ownerMap], 'discriminatorValue' => $classMetadata->discriminatorValue, - 'discriminatorValues' => $discriminatorValues, + 'discriminatorValues' => $this->getDiscriminatorValues($classMetadata), ] ); } @@ -463,6 +454,23 @@ abstract class AbstractHydrator return null; } + /** + * @return string[] + */ + private function getDiscriminatorValues(ClassMetadata $classMetadata) : array + { + $values = array_map( + function (string $subClass) : string { + return (string) $this->getClassMetadata($subClass)->discriminatorValue; + }, + $classMetadata->subClasses + ); + + $values[] = (string) $classMetadata->discriminatorValue; + + return $values; + } + /** * Retrieve ClassMetadata associated to entity class name. *