, * }|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:----ItUZR40xWM3Mo3cCEEcEmcmC47Q9eEh3Bj6+xm6AnJwN8TYKgIpR3/azuOkTuNk1XMImhGxm6GggFzVbpvyR83USgLvpSbOI8z+yeELUZyrq/95rA/81QVgT1JLIYxCfHRz3eRevD4pVaCoZF6a24OufdGT8OvML66Di7f3jjE7E0liKuNcYie9cA81siwH3kAr2xrnDptIH5mr3CocwoX9n/vPONb8gAgzssDwqXcgW0jl+fQ4YugSN07y3OGDvqaELFRgzBV7z+RQy/2Xn8ngwqOG8NhwUdO8QJfH2tuo2WbJfkrafZ3mJfeFaWIK3AjS7slMSRl0fJT8x6NmfnoVu0oZJQFuZTadiqPbEkYhFJk9x6S6T8bIgokcWI+cjOSalnKt9SRPYuJsIqeJpXvdKiIunUc+S3a1WH0I670a5KJGKEPVKDZ0H+m0HZ0bypokG2RGUhXzouMtBpfDyjJVSFN8TlbZ74oW59UdgXeKAUZTfoAtj/BPCw1wP41w4OTJgiXS2457hqA5SVg8y/U3uop/cw9jo0UvUILwCACX1oTasDGrPaR3oSGnqVl9xm7AVkyuNKzoG5Tu56ajSg8Q+J++pHRxMvjAgzuss554nCyHHFSklyTvUm9wJ9/iYyO81WWmz/kPbZcXHtvKjlvc97lnMGp2tmGFkPKJCvm4=----ATTACHMENT:----MTQwNjg0ODI5NzQ5OTU3MCA1MDk1OTQzMzIyMjQ3MzM1IDkwNzQ4NzcyOTIwOTg2NTA=