Example #1
0
 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());
 }
Example #2
0
 /**
  * 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];
 }