Nette\Reflection\AnnotationsParser::expandClassName PHP Method

expandClassName() public static method

Expands class name into FQN.
public static expandClassName ( $name, ReflectionClass $reflector ) : string
$reflector ReflectionClass
return string fully qualified class name
    public static function expandClassName($name, \ReflectionClass $reflector)
    {
        if (empty($name)) {
            throw new Nette\InvalidArgumentException('Class name must not be empty.');
        } elseif ($name === 'self') {
            return $reflector->getName();
        } elseif ($name[0] === '\\') {
            // already fully qualified
            return ltrim($name, '\\');
        }
        $filename = $reflector->getFileName();
        $parsed = static::getCache()->load($filename, function (&$dp) use($filename) {
            if (self::$autoRefresh) {
                $dp[Nette\Caching\Cache::FILES] = $filename;
            }
            return self::parsePhp(file_get_contents($filename));
        });
        $uses = array_change_key_case((array) ($tmp =& $parsed[$reflector->getName()]['use']));
        $parts = explode('\\', $name, 2);
        $parts[0] = strtolower($parts[0]);
        if (isset($uses[$parts[0]])) {
            $parts[0] = $uses[$parts[0]];
            return implode('\\', $parts);
        } elseif ($reflector->inNamespace()) {
            return $reflector->getNamespaceName() . '\\' . $name;
        } else {
            return $name;
        }
    }

Usage Example

 /**
  * Registers repositories from annotations
  */
 private function registerAnnotations()
 {
     $ref = Nette\Reflection\ClassType::from($this);
     $annotations = $ref->getAnnotations();
     if (isset($annotations['property-read'])) {
         $c = get_called_class();
         $namespace = substr($c, 0, strrpos($c, '\\'));
         foreach ($annotations['property-read'] as $value) {
             if (preg_match('#^([\\\\\\w]+Repository)\\s+\\$(\\w+)$#', $value, $m)) {
                 $class = '\\' . Reflection\AnnotationsParser::expandClassName($m[1], $ref);
                 $this->register($m[2], $class);
                 $this->aliases[$m[2]] = $class;
             }
         }
     }
 }
All Usage Examples Of Nette\Reflection\AnnotationsParser::expandClassName