From 2905b435db46b71a501991dccb256a7c037d8972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Sun, 18 Feb 2018 09:49:41 +0100 Subject: [PATCH] Remove loose comparison on discriminator values According to mapping drivers the discriminator values can always be converted to strings so it's safe to assume that we can actually do a strict comparison during hydration. --- lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php index 1fd327be8..144fe8257 100644 --- a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php +++ b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php @@ -299,8 +299,7 @@ abstract class AbstractHydrator // If there are field name collisions in the child class, then we need // to only hydrate if we are looking at the correct discriminator value if (isset($cacheKeyInfo['discriminatorColumn'], $data[$cacheKeyInfo['discriminatorColumn']]) - // Note: loose comparison required. See https://github.com/doctrine/doctrine2/pull/6304#issuecomment-323294442 - && ! in_array($data[$cacheKeyInfo['discriminatorColumn']], $cacheKeyInfo['discriminatorValues']) + && ! in_array((string) $data[$cacheKeyInfo['discriminatorColumn']], $cacheKeyInfo['discriminatorValues'], true) ) { break; } @@ -398,13 +397,13 @@ abstract class AbstractHydrator // should there be field name collisions if ($classMetadata->parentClasses && isset($this->_rsm->discriminatorColumns[$ownerMap])) { $discriminatorValues = array_map( - function (string $subClass) { - return $this->getClassMetadata($subClass)->discriminatorValue; + function (string $subClass) : string { + return (string) $this->getClassMetadata($subClass)->discriminatorValue; }, $classMetadata->subClasses ); - $discriminatorValues[] = $classMetadata->discriminatorValue; + $discriminatorValues[] = (string) $classMetadata->discriminatorValue; return $this->_cache[$key] = \array_merge( $columnInfo,