, * }|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:----Gb3fnoxueAPaj73d7bsLM05zXTFqs+CRyf0WRc7b1egGd/RCB534tqCDXieufPDFswoNkML9/ebBYgFRzlZP7Qv8/4KlMgBbvl9zShcbdWaZ+vYW38poIE0kDzJ7gJjXLKJ+rCBn4IkWVKwE0uf0/pHEwiG++BiFJM1b1+wvTWvcskt0lmfv8xmokCKp8T0UwKbr8iNNG/yLDMl/j+sHueoepDXY0UQXhHPwvY5qDc6uFnpOzEfk31kwgvB6r0HC43R5Coyx2CDJ08qwGDbjSuVGIbwqoX5d1eMcnQD9gjT7XRuygRZGfAJ5/Q462vn4Aqkk6ZYPl19KxO6WWnlg2N2t0ywNUVdClfKPOMKXtKPFVOiXT4VkrGxy0r+Ok07XWgdL+Ab9LqNWGO5outtjuzUKkNnRRX1kpTzYync134aK8EJ6+ocD89/A464o9LUhKc4w4Y+5dNnB3M4q+10EevwLtDNt2WNiMYJJHHIv7Vlt/vgfuo2KCCoD7cAn6Qqi2ZyvoL9VNM00vPXf03E/HYOv/UCy8Z41ln8r/7ytCldIPmfW+70bkU4nEqoWw/0/DAifMGg4c6xGZLC3cIccHI5gDShm7i32Eld4nuAmDBMCTRewe6t3Us/hGrGEJ8Z+y/hmVRN4PfTN6nL4KM1lfyuNagX27JAHKL8augAVlI4=----ATTACHMENT:----ODI0NzUwNzY5NTk4NzQgMzY3MDY0OTcwNTE3ODY1MSA0ODU3OTEwMzk3OTAzNjQ1