diff --git a/polyfill/ReflectionEnumPolyfill.php b/polyfill/ReflectionEnumPolyfill.php index 19bd49c6..a1fec9b8 100644 --- a/polyfill/ReflectionEnumPolyfill.php +++ b/polyfill/ReflectionEnumPolyfill.php @@ -5,10 +5,27 @@ } /** @internal */ -class ReflectionEnum +class ReflectionEnum extends \ReflectionClass { - public function __construct($enum) + public function __construct($objectOrClass) {} + + public function hasCase(string $name): bool + { + } + + public function getCases(): array + { + } + + public function getCase(string $name): ReflectionEnumUnitCase + { + } + + public function isBacked(): bool { } -} + public function getBackingType(): ?ReflectionType + { + } +} diff --git a/src/Generator/EnumGenerator/Cases/CaseFactory.php b/src/Generator/EnumGenerator/Cases/CaseFactory.php index 0e1d5550..b48c3a49 100644 --- a/src/Generator/EnumGenerator/Cases/CaseFactory.php +++ b/src/Generator/EnumGenerator/Cases/CaseFactory.php @@ -10,6 +10,7 @@ use function array_key_exists; use function array_map; use function assert; +use function method_exists; use const PHP_VERSION_ID; @@ -65,6 +66,12 @@ public static function fromReflectionCases(ReflectionEnum $enum) $backedCases[$singleCase->getName()] = $singleCase->getBackingValue(); } - return BackedCases::fromCasesWithType($backedCases, $backingType->getName()); + // PHP 8.2 + if (method_exists($backingType, 'getName')) { + $backingTypeName = $backingType->getName(); + } else { + $backingTypeName = (string) $backingType; + } + return BackedCases::fromCasesWithType($backedCases, $backingTypeName); } }