protected function resolveClassName(PHPParser_Node_Name $name)
 {
     // don't resolve special class names
     if (in_array((string) $name, array('self', 'parent', 'static'))) {
         return $name;
     }
     // fully qualified names are already resolved
     if ($name->isFullyQualified()) {
         return $name;
     }
     // resolve aliases (for non-relative names)
     if (!$name->isRelative() && isset($this->aliases[$name->getFirst()])) {
         $name->setFirst($this->aliases[$name->getFirst()]);
         // if no alias exists prepend current namespace
     } elseif (null !== $this->namespace) {
         $name->prepend($this->namespace);
     }
     return new PHPParser_Node_Name_FullyQualified($name->parts, $name->getAttributes());
 }
Пример #2
0
 public function testIs()
 {
     $name = new PHPParser_Node_Name('foo');
     $this->assertTrue($name->isUnqualified());
     $this->assertFalse($name->isQualified());
     $this->assertFalse($name->isFullyQualified());
     $this->assertFalse($name->isRelative());
     $name = new PHPParser_Node_Name('foo\\bar');
     $this->assertFalse($name->isUnqualified());
     $this->assertTrue($name->isQualified());
     $this->assertFalse($name->isFullyQualified());
     $this->assertFalse($name->isRelative());
     $name = new PHPParser_Node_Name_FullyQualified('foo');
     $this->assertFalse($name->isUnqualified());
     $this->assertFalse($name->isQualified());
     $this->assertTrue($name->isFullyQualified());
     $this->assertFalse($name->isRelative());
     $name = new PHPParser_Node_Name_Relative('foo');
     $this->assertFalse($name->isUnqualified());
     $this->assertFalse($name->isQualified());
     $this->assertFalse($name->isFullyQualified());
     $this->assertTrue($name->isRelative());
 }
Пример #3
0
    protected function rewriteStaticClassLookup(PHPParser_Node_Name &$name) {
        // don't try to resolve special class names
        if (in_array((string) $name, array('self', 'parent', 'static'))) {
            return;
        }

        // leave the fully qualified ones alone
        if (!$name->isFullyQualified()) {
            // resolve aliases (for non-relative names)
            if (!$name->isRelative() && isset($this->aliases[$name->getFirst()])) {
                $name->setFirst($this->aliases[$name->getFirst()]);
            // if no alias exists prepend current namespace
            } elseif (null !== $this->namespace) {
                $name->prepend($this->namespace);
            }
        }

        // finally just replace the namespace separators with underscores
        $name->set($name->toString('__'));
        $name->type = PHPParser_Node_Name::NORMAL;

        // and rewrite some special classes
        if (isset(self::$specialClasses[(string) $name])) {
            $name->set(self::$specialClasses[(string) $name]);
        }
    }