/** * @param Node\Name $node * @param ClassMetadata $metadata * @param array $classCollected * * @return string */ public function findRightClass(Node\Name $node, ClassMetadata $metadata, array $classCollected = array()) { $class = implode('\\', $node->parts); $lastPartsClass = array_map(function ($value) { return substr(strrchr($value, '\\'), 1); }, $classCollected); $class = $this->reservedWordReplacer->replace($class); if (in_array($class, $classCollected)) { return '\\' . $class; } elseif (array_key_exists($class, $metadata->getClassesAlias())) { $alias = $metadata->getClassesAlias(); return '\\' . $alias[$class]; } elseif (false !== ($key = array_search($class, $lastPartsClass))) { return '\\' . $classCollected[$key]; } elseif (false !== ($key = array_search($metadata->getNamespace() . '\\' . $class, $classCollected))) { return '\\' . $classCollected[$key]; } else { return $class; } }