, * }|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:----wrq2u1eFwarZtNMOKszsz4MnicP+uFie5kHw9g91lm+JtfzTgTofrI9ef9x34a3fDr78qgzIcXHkNSqJjLSuETyk+EBLChKY3tPzXidt1NGPBwM5uWmFLr6FyjT671gblGTxh/QTU5syBLvSbkZAMh+c0Twn700HO+xgFwThbr96lznrStJR+A2NtXqwpujvau3m/HV8xsqOpWyFEC3eFnSUALMQhMgqbQmAyMwXxSpmWbTViOhcheh+vwonSeZo6VN3C6i+UbzMrynWp9neyUmoi/hzWgD0hkI7L9hb3jpuiRlx5MKam9n+D+nitj55tFqL1HdwSI0DF4l8vygdBmI/CDZOCc7i8vpdHSW2rlOYEOHyI4+jB5+WKVqoXeHpj7p0AVPI9h72rAJaH6kDEcTcryNVMg2b/xgPljUhl7kyeDTqMVzcOsmqQOoVHeJgmGm3L2wZg6h8v4ErsCPHNBskuzyWjjX1nhSTwtw4ThBYWLYUcnapjjGF8daHDWo5Vgelnb45m/3IxkMopCmPdJDi3azX32bjobQwXeCzpWDsVIWwE8GirEwzlEE/8xSCAN0ByJgm06TjAAyQO5JBVO+FI1tr8sFbaF7a9Rv3cO9hbz3fpJ6axpcP4bfNnEvnfggQlSnPyviAlU1kg05IJDZkkFOz6TGesngAa17LTtY=----ATTACHMENT:----OTcwMTU1ODUwMTM3NDE5OSAyNTk4MTQ2NzAxMzg4Nzc3IDMzOTU5NDA5MzM4NzM2Njg=