protected function resolveClassName(Name $name) { // don't resolve special class names if (in_array(strtolower($name->toString()), array('self', 'parent', 'static'))) { if (!$name->isUnqualified()) { throw new Error(sprintf("'\\%s' is an invalid class name", $name->toString()), $name->getLine()); } return $name; } // fully qualified names are already resolved if ($name->isFullyQualified()) { return $name; } $aliasName = strtolower($name->getFirst()); if (!$name->isRelative() && isset($this->aliases[Stmt\Use_::TYPE_NORMAL][$aliasName])) { // resolve aliases (for non-relative names) $name->setFirst($this->aliases[Stmt\Use_::TYPE_NORMAL][$aliasName]); } elseif (null !== $this->namespace) { // if no alias exists prepend current namespace $name->prepend($this->namespace); } return new Name\FullyQualified($name->parts, $name->getAttributes()); }
/** * Prepare a name * * If the first argument is an instance of `PhpParser\Node\Name` its string representation * will be returned as first element of the result array. The value retrieved via `PhpParser\Node\Name::getLine()` * will be used as second element. * If the first parameter is not an instance of `PhpParser\Node\Name` it will be casted to string and returned alongside * with the value given for the second parameter as line * * @param \PhpParser\Node\Name|string $name * @param int $line Only used if the $name parameter is not an instance of `PhpParser\Node\Name` * @return array */ private function prepareNameAndLine($name, $line = -1) { if ($name instanceof Node\Name) { $line = $name->getLine(); $name = $name->toString(); } else { $name = (string) $name; } return [$name, $line]; }