diff --git a/composer.json b/composer.json index afc6e2e..6489851 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "phpdocumentor/reflection-common": "~2.2", "phpstan/phpdoc-parser": "~1.23", "voku/simple-cache": "~5.0", - "nikic/php-parser": "~4.18" + "nikic/php-parser": "^4.18 || ^5" }, "require-dev": { "phpunit/phpunit": "~9.6", diff --git a/src/voku/SimplePhpParser/Model/BasePHPElement.php b/src/voku/SimplePhpParser/Model/BasePHPElement.php index 55fc0ac..0668d5c 100644 --- a/src/voku/SimplePhpParser/Model/BasePHPElement.php +++ b/src/voku/SimplePhpParser/Model/BasePHPElement.php @@ -55,7 +55,7 @@ protected function getConstantFQN(NodeAbstract $node, string $nodeName): string && $parent->name instanceof Name ) { - $namespace = '\\' . \implode('\\', $parent->name->getParts()) . '\\'; + $namespace = '\\' . $parent->name->toString() . '\\'; } else { $namespace = ''; } @@ -81,10 +81,9 @@ protected static function getFQN($node): string \property_exists($node, 'namespacedName') ) { if ($node->namespacedName) { - $fqn = \implode('\\', $node->namespacedName->getParts()); + $fqn = $node->namespacedName->toString(); } elseif (\property_exists($node, 'name') && $node->name) { - var_dump($node->name); - $fqn = $node->name->name; + $fqn = $node->name instanceof Name ? $node->name->toString() : (string) $node->name; } } @@ -97,6 +96,8 @@ protected static function getFQN($node): string protected function prepareNode(Node $node): void { - $this->line = $node->getLine(); + $this->line = method_exists($node, 'getStartLine') + ? $node->getStartLine() + : $node->getLine(); // @phpstan-ignore-line getLine() was removed in PHP-Parser v5 } } diff --git a/src/voku/SimplePhpParser/Model/PHPClass.php b/src/voku/SimplePhpParser/Model/PHPClass.php index 8669f0c..04d0070 100644 --- a/src/voku/SimplePhpParser/Model/PHPClass.php +++ b/src/voku/SimplePhpParser/Model/PHPClass.php @@ -79,7 +79,7 @@ public function readObjectFromPhpNode($node, $dummy = null): self $this->collectTags($node); if (!empty($node->extends)) { - $classExtended = implode('\\', $node->extends->getParts()); + $classExtended = $node->extends->toString(); /** @noinspection PhpSillyAssignmentInspection - hack for phpstan */ /** @var class-string $classExtended */ $classExtended = $classExtended; @@ -121,7 +121,7 @@ public function readObjectFromPhpNode($node, $dummy = null): self if (!empty($node->implements)) { foreach ($node->implements as $interfaceObject) { - $interfaceFQN = implode('\\', $interfaceObject->getParts()); + $interfaceFQN = $interfaceObject->toString(); /** @noinspection PhpSillyAssignmentInspection - hack for phpstan */ /** @var class-string $interfaceFQN */ $interfaceFQN = $interfaceFQN; diff --git a/src/voku/SimplePhpParser/Model/PHPConst.php b/src/voku/SimplePhpParser/Model/PHPConst.php index 9db7005..b5d8112 100644 --- a/src/voku/SimplePhpParser/Model/PHPConst.php +++ b/src/voku/SimplePhpParser/Model/PHPConst.php @@ -144,7 +144,7 @@ protected function getConstantFQN(NodeAbstract $node, string $nodeName): string && $parentParentNode->name instanceof Name ) { - $namespace = '\\' . \implode('\\', $parentParentNode->name->getParts()) . '\\'; + $namespace = '\\' . $parentParentNode->name->toString() . '\\'; } else { $namespace = ''; } diff --git a/src/voku/SimplePhpParser/Model/PHPEnum.php b/src/voku/SimplePhpParser/Model/PHPEnum.php index f56bf9c..5860347 100644 --- a/src/voku/SimplePhpParser/Model/PHPEnum.php +++ b/src/voku/SimplePhpParser/Model/PHPEnum.php @@ -89,7 +89,7 @@ public function readObjectFromPhpNode($node, $dummy = null): self if (!empty($node->implements)) { foreach ($node->implements as $interfaceObject) { - $interfaceFQN = \implode('\\', $interfaceObject->getParts()); + $interfaceFQN = $interfaceObject->toString(); /** @noinspection PhpSillyAssignmentInspection - hack for phpstan */ /** @var class-string $interfaceFQN */ $interfaceFQN = $interfaceFQN; diff --git a/src/voku/SimplePhpParser/Model/PHPInterface.php b/src/voku/SimplePhpParser/Model/PHPInterface.php index 9da54a0..655fb33 100644 --- a/src/voku/SimplePhpParser/Model/PHPInterface.php +++ b/src/voku/SimplePhpParser/Model/PHPInterface.php @@ -70,7 +70,7 @@ public function readObjectFromPhpNode($node, $dummy = null): self if (!empty($node->extends)) { /** @var class-string $interfaceExtended */ - $interfaceExtended = \implode('\\', $node->extends[0]->getParts()); + $interfaceExtended = $node->extends[0]->toString(); $this->parentInterfaces[] = $interfaceExtended; } diff --git a/src/voku/SimplePhpParser/Parsers/Helper/Utils.php b/src/voku/SimplePhpParser/Parsers/Helper/Utils.php index 754d471..2ab60ae 100644 --- a/src/voku/SimplePhpParser/Parsers/Helper/Utils.php +++ b/src/voku/SimplePhpParser/Parsers/Helper/Utils.php @@ -114,7 +114,7 @@ public static function getPhpParserValueFromNode( $node->value->name ) { if ($node->value->name instanceof \PhpParser\Node\Name) { - $value = implode('\\', $node->value->name->getParts()) ?: $node->value->name->name; + $value = $node->value->name->toString(); } else { $value = \is_string($node->value->name) ? $node->value->name : (string) $node->value->name; } diff --git a/src/voku/SimplePhpParser/Parsers/PhpCodeParser.php b/src/voku/SimplePhpParser/Parsers/PhpCodeParser.php index 1a37ab2..9303a37 100644 --- a/src/voku/SimplePhpParser/Parsers/PhpCodeParser.php +++ b/src/voku/SimplePhpParser/Parsers/PhpCodeParser.php @@ -200,7 +200,7 @@ public static function process( ParserContainer $parserContainer, ASTVisitor $visitor ) { - $parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7); + $parser = (new ParserFactory())->createForNewestSupportedVersion(); $errorHandler = new ParserErrorHandler();