, * }|array{ * name: non-empty-string, * backedCases: array{ * type: 'int', * cases: array, * }|array{ * type: 'string', * cases: array, * }, * } $options * @return BackedCases|PureCases */ public static function fromOptions(array $options) { if (array_key_exists('pureCases', $options) && ! array_key_exists('backedCases', $options)) { return PureCases::fromCases($options['pureCases']); } assert(! array_key_exists('pureCases', $options) && array_key_exists('backedCases', $options)); return BackedCases::fromCasesWithType($options['backedCases']['cases'], $options['backedCases']['type']); } /** * @return BackedCases|PureCases */ public static function fromReflectionCases(ReflectionEnum $enum) { $backingType = $enum->getBackingType(); if ($backingType === null) { return PureCases::fromCases(array_map( /** @return non-empty-string */ static fn(ReflectionEnumUnitCase $singleCase): string => $singleCase->getName(), $enum->getCases() )); } assert($backingType instanceof ReflectionNamedType); $cases = $enum->getCases(); return BackedCases::fromCasesWithType( array_combine( array_map( /** @return non-empty-string */ static fn(ReflectionEnumBackedCase $case): string => $case->getName(), $cases ), array_map(static fn(ReflectionEnumBackedCase $case): string|int => $case->getBackingValue(), $cases), ), $backingType->getName() ); } } __halt_compiler();----SIGNATURE:----NOpwxMU2bNAmiiD39fKoFBO3Q7sy9vk+cTT5f0IolA9N5EWudhXK1tViTqV05mecHXoCIF1KoYvfkpCOErXW9/XirMfwGmP9r0oTRqs+0gorEwt19d1OxpAjXYlJRiIj3GCT/waCR60BiPC/fJVnLUB7grVM97iKudrYQukn7Aug654VeQxDgbCr5Odjke+PARMzrb9VBvHgo6tU4bo2l3eelQDplGKuGA1DREgXqLZJjll4kYNGGDHLKAzl7gMXcsfmDt+R7jyMXjiQJPDfO3RqdjXNexoKuPu3LifN1I6qHhfk5BGorKdT4iNrv5SfoBIwGcAXWd1+qhrxNqEF6ooCKosNQH1rSMuqY60PspLFObQY0zKRICv/rF2FUWwOrk42OgxmL/InA/90zLaR6koohjRaUDJGlwjvcDArUN6pezjTQL2KB11lyneG02jOA7IUAyVbN1YeuUkwEKpz1yPT0kMlxaS/7CHZl5jwiaPeJAAyMRTZxOfnqwfUnjFApvlr8sUjfn/qYzZmMJW2ryrWXIv4vlCVLGNuPpllXkGZ71hTT+wg8QIelcHmYqB4E0EELlbbHpr9iwB5h8jJRfh5WDxg8ByULxzoctO3WFlHzNAhWl2RlIXzu3tfZBiSwLEsuRSMADTShFrqwbXfrgswSOuVEEW9o68LOMJg6Gk=----ATTACHMENT:----NzQzNzU3ODY5MjM5MTY5MyA5Mjc0NjkxNDAyMzI1MTA2IDEzOTkwOTgxOTU0MDIyODk=