*/ 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:----B8tXpvZBtTGs0EAA0RUvu+rWwSoiPRVZF7L8pCxqsJ2s4AQWDHNCBFqUOKObK/LCMZ8BsCEWQeyLboStPyieSHHqcmX+Lucju9n5qV+rSs97vNJEX86S7DPeHdMMBosAvYGJwl2ZHc+BFDhdF6uzVvxFVfMSVclyJWFW+ZgsYB8FhrJMcQNuSSph/zcwHweG4XTte5ts6tO7dujvJPsUwdQgN7UfxYzR3j+QkkWetTrGhZJ3a2xzTMfmfFllDzvUryqqXGNCZV18tooJ7TW1ECnWcu1dxEsexUwgiyurEIa7aeOj+y2DHDyuV43xTsB4dYXQECWjmY7aodQWMMYnpdip/mQzoomfE12wR2+rcnOBG6J6xq//6qSQJ90Z9oo+Xizm1sQKGd7x+vzxxWPspf0qzfhalopAZpBx0RZDcMNQ3synx0+US93MJjQ6q8BcU1zTY9xOYVwwyF+qnQDQ1NSNv3X5kwjq9io4C4uMiluKt/6er/+tDjFm5H/ZbRENN2cT24+DlJKICYUOOOOEAKWQiWSMHU+Rpz7lF4bkmLzKy24xjptVFXKY2JLrPyEfy7/6qvQMwLG8TTxIT0ia8ZMYQ/rPS/s3KeTBbWCn6gn3Aarq4bf00w7d4uAZoSPl3xu0nsSe3AH52gG9sfOw2lFe7rhAX96JfbZyaYaWRrc=----ATTACHMENT:----NTg4Mjk1ODMyNzUzOTk4OCA5MDY5Mzg5MzU5NzQxNzIgOTk3NjEzOTQ3MTEzNjA5OA==