diff --git a/src/Scanner/ClassScanner.php b/src/Scanner/ClassScanner.php index 1ca7fd3d..7069d5e9 100644 --- a/src/Scanner/ClassScanner.php +++ b/src/Scanner/ClassScanner.php @@ -985,7 +985,11 @@ protected function scan() case T_STRING: switch ($classContext) { case T_EXTENDS: - $this->shortParentClass .= $tokenContent; + if ($this->isInterface) { + $this->shortInterfaces[$classInterfaceIndex] .= $tokenContent; + } else { + $this->shortParentClass .= $tokenContent; + } break; case T_IMPLEMENTS: $this->shortInterfaces[$classInterfaceIndex] .= $tokenContent; @@ -1006,7 +1010,8 @@ protected function scan() // goto no break needed case null: - if ($classContext == T_IMPLEMENTS && $tokenContent == ',') { + if (($classContext == T_IMPLEMENTS && $tokenContent == ',') + || ($classContext == T_EXTENDS && $tokenContent == ',' && $this->isInterface)) { $classInterfaceIndex++; $this->shortInterfaces[$classInterfaceIndex] = ''; } diff --git a/test/Scanner/ClassScannerTest.php b/test/Scanner/ClassScannerTest.php index ea8514f1..254cc3e2 100644 --- a/test/Scanner/ClassScannerTest.php +++ b/test/Scanner/ClassScannerTest.php @@ -307,4 +307,13 @@ public function testTraitIsNotInstantiable() $this->assertTrue($class->isTrait()); $this->assertFalse($class->isInstantiable()); } + + public function testGetInterfacesFromInterface() + { + $file = new FileScanner(__DIR__ . '/../TestAsset/FooInterface.php'); + $class = $file->getClass('ZendTest\Code\TestAsset\FooInterface'); + $this->assertTrue($class->isInterface()); + $this->assertEquals(1, count($class->getInterfaces())); + $this->assertEquals('ArrayAccess', $class->getInterfaces()[0]); + } }