Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e006ecb

Browse files
committed
doctrine#1130 DDC-3300 - optimizing performance (looping over existing classes first): throwing exceptions if the class is not found in the discriminator map
1 parent 68cfe05 commit e006ecb

1 file changed

Lines changed: 23 additions & 7 deletions

File tree

lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -304,21 +304,37 @@ protected function newClassMetadataInstance($className)
304304
*
305305
* @param ClassMetadata $metadata
306306
*
307+
* @return void
308+
*
307309
* @throws MappingException
308310
*/
309311
private function populateDiscriminatorValue(ClassMetadata $metadata)
310312
{
311-
if (! $metadata->discriminatorValue && $metadata->discriminatorMap) {
312-
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
313-
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
314-
$metadata->discriminatorValue = $discriminatorValue;
313+
if ($metadata->discriminatorValue
314+
|| ! $metadata->discriminatorMap
315+
|| $metadata->isMappedSuperclass
316+
|| $metadata->reflClass->isAbstract()
317+
) {
318+
return;
319+
}
315320

316-
break;
317-
}
321+
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
322+
if ($discriminatorClass === $metadata->name) {
323+
$metadata->discriminatorValue = $discriminatorValue;
324+
325+
return;
318326
}
327+
}
328+
329+
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
330+
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
331+
$metadata->discriminatorValue = $discriminatorValue;
319332

320-
//throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
333+
return;
334+
}
321335
}
336+
337+
throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
322338
}
323339

324340
/**

0 commit comments

Comments
 (0)