, * }|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:----OdlQJehbfIqAinEnJWJRdMNWkiPMNSMJ/b0ytLtoE1bSHzJtFHv62jxXn02oS+Od4ZIDWQpR505m1y02dMe6gGbSnjDlh/u+u6UBHiM12Zm+43cBfp9PLlPSjk2ImiiG7hNJHuXHJ9RhobmqNeoSE+uk+heee6p8sRbOgjxQHvMfAG6ifoc3KvVtQwQza88tQdT6QSlsEu6PjzJbdWL4p9ZHiZ7m6wjn8dKAdG7yjPPu18lmSPkWGusJ2KSgPHrxY1ma7dwUCT2y410aSjYNhnWxTtnLkYLZaTadgc596I5JRLyH6+zxdbnTh0zjNXUABkQspx8surggpLUhIGJ3KZBv7PcxPqpTaphhGEbLpMWywGebZDMcHfbJkxINuPyJilpY0jNDIcWo8wGn5WG08PsbWnhYX3C3W+cz4lBT7Wy/repoecZcRlvdskpnR03V+TTIGvj9osGiOVZ8fiBpG7VKBH19AxMcn/RXsGCYkXvWjmhNGUViNuPztfJCHHIXHFOEmP/FhIsHxV/E9SgniFh+S35tbO7AlqNbttR1ROcIjh+lMl2M5bF5Dvb2JNi3NpmDHmcQl3MkVbHROm8STAJScb+S88m7wzLJTLVIHo4aQ9JlfpH2UO6qWUNFpUlApPbAkjr+D6Hghl8vyKBGTRdlnX76fMfZZDC+kHYfb/8=----ATTACHMENT:----MjE3NjA5OTQ2MDkwOTIyMiA1NTYwNzIyNjYwOTkyMjU5IDg2MzU0NTk2MTA5OTY3Nzc=