/** * Expands class name into full name. * @param string * @return string full name * @throws Nette\InvalidArgumentException */ public static function expandClassName($name, \ReflectionClass $rc) { if (empty($name)) { throw new Nette\InvalidArgumentException('Class name must not be empty.'); } elseif ($name === 'self') { return $rc->getName(); } elseif ($name[0] === '\\') { // fully qualified name return ltrim($name, '\\'); } $uses =& self::$cache[$rc->getName()]; if ($uses === NULL) { self::$cache = self::parseUseStatemenets(file_get_contents($rc->getFileName()), $rc->getName()) + self::$cache; $uses =& self::$cache[$rc->getName()]; } $parts = explode('\\', $name, 2); if (isset($uses[$parts[0]])) { $parts[0] = $uses[$parts[0]]; return implode('\\', $parts); } elseif ($rc->inNamespace()) { return $rc->getNamespaceName() . '\\' . $name; } else { return $name; } }
/** * Expands class name into full name. * @param string * @return string full name * @throws Nette\InvalidArgumentException */ public static function expandClassName(string $name, \ReflectionClass $rc) : string { $lower = strtolower($name); if (empty($name)) { throw new Nette\InvalidArgumentException('Class name must not be empty.'); } elseif (in_array($lower, ['string', 'int', 'float', 'bool', 'array', 'callable'], TRUE)) { return $lower; } elseif ($lower === 'self') { return $rc->getName(); } elseif ($name[0] === '\\') { // fully qualified name return ltrim($name, '\\'); } $uses =& self::$cache[$rc->getName()]; if ($uses === NULL) { self::$cache = self::parseUseStatemenets(file_get_contents($rc->getFileName()), $rc->getName()) + self::$cache; $uses =& self::$cache[$rc->getName()]; } $parts = explode('\\', $name, 2); if (isset($uses[$parts[0]])) { $parts[0] = $uses[$parts[0]]; return implode('\\', $parts); } elseif ($rc->inNamespace()) { return $rc->getNamespaceName() . '\\' . $name; } else { return $name; } }