, * }|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:----JZidebKi2sReEYh7NklhCYXMdFb1RJ+irFe4P6eag9WLmsiM913aLe8eK3nL3iRbJkBHVlAZFW41gpu2BqJ/RAPVdq8TDUNaq2YjP2GUchtglQm0i3Okf5CQpZw+XnnZv/S/QORE5UJ4ai6vO7K9vdIvAl00AlJwJudiFaJi11hfeoTUY58t6EuaxEGjCRBIjRFFDmWuUqlPzMZngjofkH7wbSrTxqhuyAZ0YQwkMobsMZDX74ofULYF28+piJl/bFS+DkkW8j8S7mY403Ed/izfudI+igPXtqIj13cn7iLmjCB+e/VnLull1z3BBAEkNPjotK4507sHlvIRCJakYzG7vZJKcvEUNJQCAbEfim1z8UrbJdMzVuo7Byvqc+Xo/Ye12DCCvryP5+GGA1vbWzciKC2uu8Scz9sdkC+ORe/39p7g2KAsDkBgFwvZuFjNjiWZLLZuYzvakjKbdyq4jGOYCU6pmkE1qgQR65ljTFYkiY7HUIoEpNpyKsIRgbpacW923Im9j3sklNnT+vCK5YG3fsp3x5QYiT0pUQPzbv5sn2+fpW54lnnD7mCMFjil2tfKUg9zJviMTF425yqKXLIaFTMOE3wB+xo/WYs1NEUAPtNq+DIouG2+oIhWy6HBy1cwdM/7de8f5pBICQnsJdRHUadHXdSkFEhhSqhYN1Y=----ATTACHMENT:----MjIwNzQzMDAwNTA5ODQ0IDQ4NTQyNzg0ODA5ODgxNzkgMjQzMjQ3NDUzNzA2OTk2Nw==