diff --git a/src/Reflection/BetterReflection/BetterReflectionProvider.php b/src/Reflection/BetterReflection/BetterReflectionProvider.php index 6236191b63..38f04dab89 100644 --- a/src/Reflection/BetterReflection/BetterReflectionProvider.php +++ b/src/Reflection/BetterReflection/BetterReflectionProvider.php @@ -142,11 +142,16 @@ public function getClass(string $className): ClassReflection return $this->classReflections[$reflectionClassName]; } - $enumAdapter = base64_decode('UEhQU3RhblxCZXR0ZXJSZWZsZWN0aW9uXFJlZmxlY3Rpb25cQWRhcHRlclxSZWZsZWN0aW9uRW51bQ==', true); + if ($reflectionClass instanceof ReflectionEnum && PHP_VERSION_ID >= 80000) { + $enumAdapter = base64_decode('UEhQU3RhblxCZXR0ZXJSZWZsZWN0aW9uXFJlZmxlY3Rpb25cQWRhcHRlclxSZWZsZWN0aW9uRW51bQ==', true); + $adaptedClass = new $enumAdapter($reflectionClass); + } else { + $adaptedClass = new ReflectionClass($reflectionClass); + } return $this->classReflections[$reflectionClassName] = $this->classReflectionFactory->create( $reflectionClass->getName(), - $reflectionClass instanceof ReflectionEnum && PHP_VERSION_ID >= 80000 ? new $enumAdapter($reflectionClass) : new ReflectionClass($reflectionClass), + $adaptedClass, null, null, $this->stubPhpDocProvider->findClassPhpDoc($reflectionClass->getName()), @@ -183,7 +188,6 @@ public function getAnonymousClassReflection(Node\Stmt\Class_ $classNode, Scope $ } } - $filename = $this->fileHelper->normalizePath($this->relativePathHelper->getRelativePath($scopeFile), '/'); $className = $this->anonymousClassNameHelper->getAnonymousClassName( $classNode, $scopeFile, @@ -215,6 +219,7 @@ public function getAnonymousClassReflection(Node\Stmt\Class_ $classNode, Scope $ /** @var int|null $classLineIndex */ $classLineIndex = $classNode->getAttribute(AnonymousClassVisitor::ATTRIBUTE_LINE_INDEX); + $filename = $this->fileHelper->normalizePath($this->relativePathHelper->getRelativePath($scopeFile), '/'); if ($classLineIndex === null) { $displayName = sprintf('%s@anonymous/%s:%s', $displayParentName, $filename, $classNode->getStartLine()); } else {