Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory::getMetadataFor PHP Method

getMetadataFor() public method

Gets the class metadata descriptor for a class.
public getMetadataFor ( string $className ) : Doctrine\Common\Persistence\Mapping\ClassMetadata
$className string The name of the class.
return Doctrine\Common\Persistence\Mapping\ClassMetadata
    public function getMetadataFor($className)
    {
        if (isset($this->loadedMetadata[$className])) {
            return $this->loadedMetadata[$className];
        }
        // Check for namespace alias
        if (strpos($className, ':') !== false) {
            list($namespaceAlias, $simpleClassName) = explode(':', $className, 2);
            $realClassName = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
        } else {
            $realClassName = ClassUtils::getRealClass($className);
        }
        if (isset($this->loadedMetadata[$realClassName])) {
            // We do not have the alias name in the map, include it
            return $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
        }
        $loadingException = null;
        try {
            if ($this->cacheDriver) {
                if (($cached = $this->cacheDriver->fetch($realClassName . $this->cacheSalt)) instanceof ClassMetadata) {
                    $this->loadedMetadata[$realClassName] = $cached;
                    $this->wakeupReflection($cached, $this->getReflectionService());
                } else {
                    foreach ($this->loadMetadata($realClassName) as $loadedClassName) {
                        $this->cacheDriver->save($loadedClassName . $this->cacheSalt, $this->loadedMetadata[$loadedClassName], null);
                    }
                }
            } else {
                $this->loadMetadata($realClassName);
            }
        } catch (MappingException $loadingException) {
            if (!($fallbackMetadataResponse = $this->onNotFoundMetadata($realClassName))) {
                throw $loadingException;
            }
            $this->loadedMetadata[$realClassName] = $fallbackMetadataResponse;
        }
        if ($className !== $realClassName) {
            // We do not have the alias name in the map, include it
            $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
        }
        return $this->loadedMetadata[$className];
    }

Usage Example

 /**
  * {@inheritdoc}
  *
  * @throws MappingException
  */
 public function getMetadataFor($className)
 {
     $metadata = parent::getMetadataFor($className);
     if ($metadata) {
         return $metadata;
     }
     throw MappingException::classNotMapped($className);
 }