, * }|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:----JOQEEUNhV4oUL8XPdT+6OSP8uk8QdE6klRydBE6DbVuhVNWOjIKILHYNuWXQTBX9rH6DmTIjZBE/ZK9giq96OgN2t9ar9Bmghu5dPa1ErV4oyWVxDHPFbC3bXthKliePqLEM7l2RXtoy0YU8Q1+n963VYI+Wq3qSTTlt3h7//DjI+p1n+9vJFNTsYrvCE0pCL2GodWUY71bOGnyrYP+RhKb2D97TINgRs0QEwBytIePxmx8YjgmoZ8FRg8PTE93R5SprAJk/CJzzVGUdZZK4A4lsk8DbfEwYddKqr7a7wpQmM9QIChSJBDLixm6ORAxKAyMFEKfXcyTa38BpT62o9QBikPwcPXOlR2sLGdnzBgSkQ0PMMHpAYGy7vemOMFv8qDm+A/PhlbY+g7n23lg+JjyiQZPMPEdeRpkWfa7+Jio1HXIv9A7AfrveTYyFm8aN7CWVvudJDVJoz2MwvjKv67OWJWOizkv+8ciB4aoVpIsmQNYj2Fs+I7losSTbTW8wfyLX1hxgRjAbEOOxUHKwi0sjxeH7hMq7oYUrBEbv4qWWjbgPwF33RN6u9agR5VcB0jyALuWNzjKTNNOBAPG3i2fW5BVldRDYedJQqHNa/YLfM/IE17mhzw4IgkdnLPY/4/d65gfwTMTFiHda3Tg8ARJ+UT60lnztpvBZNkNlMPk=----ATTACHMENT:----NDk1OTk1OTA1NzA2NzI3MSAyNzY4MTg2NjA0MTc5NTc5IDc0NTgxMTI1MjU0OTM1NA==