diff --git a/src/parser/visitor/ClassParserVisitor.php b/src/parser/visitor/ClassParserVisitor.php index 5925974..b108a44 100644 --- a/src/parser/visitor/ClassParserVisitor.php +++ b/src/parser/visitor/ClassParserVisitor.php @@ -12,7 +12,11 @@ public function visitClass(Class_ $node) { $struct = $this->getStruct(); if ($node->extends !== null) { - $struct->setParentClassName(implode('\\', $node->extends->parts)); + if ($node->extends->getType() === 'Name_FullyQualified') { + $struct->setParentClassName('\\' . implode('\\', $node->extends->parts)); + } else { + $struct->setParentClassName(implode('\\', $node->extends->parts)); + } } foreach ($node->implements as $name) { diff --git a/tests/fixtures/MyCollection2.php b/tests/fixtures/MyCollection2.php new file mode 100644 index 0000000..f460a74 --- /dev/null +++ b/tests/fixtures/MyCollection2.php @@ -0,0 +1,4 @@ +assertEquals('phootwork\collection\AbstractCollection', $class->getParentClassName()); $this->assertTrue($class->hasInterface('phootwork\collection\Collection')); } + + public function testMyCollection2() { + $class = PhpClass::fromFile(__DIR__ . '/../fixtures/MyCollection2.php'); + + $this->assertEquals('\phootwork\collection\AbstractCollection', $class->getParentClassName()); + $this->assertTrue($class->hasInterface('\phootwork\collection\Collection')); + } public function testTypeClass() { $class = PhpClass::fromFile(__DIR__ . '/../fixtures/TypeClass.php');