, * }|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:----M6TKJmhMiYKF5n2HNMIjqaZBJfNj0l1UZ4aO4s9Shgo9A/cYwLhzJ5UK/bTLqmaRljwwE3JdD9JUdMtvmOeQtdYsnfZzRLcLHbS1Qt2dZRFmMFOKNmYnuO//1IuDakeMMtbCONy1jqXT04n3Lv4b7fQtnOMJFdeA4zDw1B0dF4e/jB/lJppsE465oinRCMVcl953TBoPOXn2tOd5stOCHLre/M0+OJVMWbpXQXcTDlyrr3fQ0psNKibQzOXkdbem6TwVto31Kan6/g9Exony+a8ar+ueD8RjfFMW+6h2uvmDiNhSaVEn1xSrIB7WgxxY0TjJbVeDXsCjUUXnOh31G5xjxGfQiNZ+zQC99fL/T3gPMIY3E/7zPMmDX01NAbfH+/LMTBIM0Y2yUngrVLsp7ovtpkIBDVem2whu0ml/y+G9QOsGnYG+HMbaVIj5ccy9yloWwQ1RPOJPO2yqPubIAxaU7N51gvGUSuIQzuPajSQYIXJyxP7LPWT33vqapRdhdx4p8iSzGTChYXWiKtcb0Le07beu38vi7gu4AbfdVOCoPgbilmNHVlAyzianwooBvPJGY3Uvfe1ERvEP1lbBQ/otjKNA7lagHceNPWnmBV5aRC8dbZUzlYn96M0D9xPRnlb42rKFNgJisRbYTVfoNg2E4I6iS5yE2eNY9ecmeqQ=----ATTACHMENT:----NDk2Nzg3MDU3MjIxOTk3NCAxNTU2OTgwMzE4NzQyNTM4IDE5OTI2Mjk5NzY1NzYzOTI=