diff --git a/src/FileExtractor/PHPFileExtractor.php b/src/FileExtractor/PHPFileExtractor.php index cb35178..798d8ec 100644 --- a/src/FileExtractor/PHPFileExtractor.php +++ b/src/FileExtractor/PHPFileExtractor.php @@ -33,7 +33,7 @@ final class PHPFileExtractor implements FileExtractor public function getSourceLocations(SplFileInfo $file, SourceCollection $collection): void { $path = $file->getRelativePath(); - $parser = (new ParserFactory())->createForVersion(PhpVersion::fromString('8.1')); + $parser = (new ParserFactory())->createForNewestSupportedVersion(); $traverser = new NodeTraverser(); foreach ($this->visitors as $v) { $v->init($collection, $file); diff --git a/src/Visitor/Php/Symfony/FormTrait.php b/src/Visitor/Php/Symfony/FormTrait.php index 0a8b4b0..1892287 100644 --- a/src/Visitor/Php/Symfony/FormTrait.php +++ b/src/Visitor/Php/Symfony/FormTrait.php @@ -23,9 +23,12 @@ trait FormTrait */ private function isFormType(Node $node): bool { - // only Traverse *Type + // Check if the class implements FormTypeInterface if ($node instanceof Stmt\Class_) { - $this->isFormType = 'Type' === substr($node->name, -4); + $this->isFormType = \in_array( + 'Symfony\Component\Form\FormTypeInterface', + array_map(fn ($interface) => $interface->toString(), $node->implements ?? []) + ); } return $this->isFormType;