*/ private array $cases; /** * @phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod.Found */ private function __construct( private Reflector $reflector, EnumNode $node, LocatedSource $locatedSource, string|null $namespace = null, ) { parent::__construct($reflector, $node, $locatedSource, $namespace); $this->backingType = $this->createBackingType($node); $this->cases = $this->createCases($node); } /** * @internal * * @param EnumNode $node * * @psalm-suppress MoreSpecificImplementedParamType */ public static function createFromNode( Reflector $reflector, ClassNode|InterfaceNode|TraitNode|EnumNode $node, LocatedSource $locatedSource, string|null $namespace = null, ): self { return new self($reflector, $node, $locatedSource, $namespace); } /** * @param non-empty-string $name */ public function hasCase(string $name): bool { return array_key_exists($name, $this->cases); } /** * @param non-empty-string $name */ public function getCase(string $name): ReflectionEnumCase|null { return $this->cases[$name] ?? null; } /** * @return array */ public function getCases(): array { return $this->cases; } /** * @return array */ private function createCases(EnumNode $node): array { $enumCasesNodes = array_filter($node->stmts, static fn (Node\Stmt $stmt): bool => $stmt instanceof Node\Stmt\EnumCase); return array_combine( array_map(static function (Node\Stmt\EnumCase $enumCaseNode): string { $enumCaseName = $enumCaseNode->name->toString(); assert($enumCaseName !== ''); return $enumCaseName; }, $enumCasesNodes), array_map(fn (Node\Stmt\EnumCase $enumCaseNode): ReflectionEnumCase => ReflectionEnumCase::createFromNode($this->reflector, $enumCaseNode, $this), $enumCasesNodes), ); } public function isBacked(): bool { return $this->backingType !== null; } public function getBackingType(): ReflectionNamedType { if ($this->backingType === null) { throw new LogicException('This enum does not have a backing type available'); } return $this->backingType; } private function createBackingType(EnumNode $node): ReflectionNamedType|null { if ($node->scalarType === null) { return null; } $backingType = ReflectionNamedType::createFromNode($this->reflector, $this, $node->scalarType); assert($backingType instanceof ReflectionNamedType); return $backingType; } } __halt_compiler();----SIGNATURE:----bcDxLREqGF1XwAvd+apWVY3dnVMNreqUbUIj+HL/OtMKSoE+o2LR561si0TNVDfN/QPKFgV78C5gUBx0DSism8/FFG/BpODepWOW0IVJ5fwHem8ISSVyU3J28UABo+hubOR0uiH7j1DDQvPu8kdJYetp1qStpln2so8ZnwtWMgkNlhkyX3R4gAJLrJkw9EshzyWpVadc02DVm5Mu0dF8Mh1wiKjMWvxx+ErMyEgjj5HMnZFiGtQKCMYyzV5eFmf8McZDZwTwjsgzcyh2zcvhfv1rMgcZfYRXDxn18zhUDGu4R44k104qFSZasgCGypwcdzCDiIdafCVufvQiP/G3jZoQuL+KzZwn9Yr07o3IjR0gSIZDsWy+q+3rIdRfJyE/7Z7l6qsSNMz73nOcmhI//HloaKW8lA4dHWIqsQaJfSLX4sxQP56oysgrmu8nFyZQ9kLpVH5k9/PWbmIJPARdhmSMrYc4QxwFyWeQf2deUEbBqjQAuMyyXoYaHP9wHqEfFSv9wI14rDmtzdRhNUK7weTezM3AuqLPt0HUQjVXY4SW5zmMkGtbeOJ1fFgApkHsrdABsqHOr/AmsS/3nTkLFIeiESpaepfX51F4q+RiOZR8nL80q5yiCntlKOW84qc20CES2gvBHGcR3wQtA/Dfn94LS5JkuJqXRJd6+xTyp+Q=----ATTACHMENT:----ODU4OTA4NDA4NzIzOTQ0NyA1MjAwNjI1NzE2MzcwNTYzIDkzNzIzNjE1NDMzMDk0MjM=