, * }|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:----flRBs3xxmINctVQszrcp/3PBYhZIHTf0yU3V3cs/uYmkkyzWPfHPL91puJeYzjz81/2vqNAOAMuJJN3siCMs/EtwnF0LQzQezNgxPNLHmN6x9kPVfcrS4qyZfpr9GmzIIiJnQIaCyCxchruy6KY/NiCHIlpI4Atku1w9pWbGPrqNcVbG6YnfwCu3RestYNeVLeU1djUb3Pn2MTehNrMnyX6gm2a6Hj4djG6JBdhmht5W3X+uYwI4/jxwRTC83zuWRSifcfB7x4pKrf8C2rg6JRXJr+MajoYWNqKeY8J7PVzFf7E5OUBJ/tZmj1GSmeXstmtu9U4a1UtMa2IY/eE6wD6QJpWXZXyIglABOXuVGcBwgWtdGLXw3FOaK+V3hvZtN1LR5cLvSyYjmZS+890YndG4geW6EBqzx47M6PE1O8MlWBAXPsHuCdjXfbY0fJzow70qQqjvz6LzK61vO9AlL6yN2rrdUo9XEaOM3UWkujCEo0uN6Xnw99GVdwv5+fNpUURpsiTAhqMvHC4VMIanA1cKp9lHeleJDeGYUw4kpm0xd3h6qkT6tn55ltpmQAHwgEFHt+vZgAimP4D4SWxISkcS5dn+JlsSbX98h8lb4CW1FpwGiZtI4uZc7Z/lbfMfzhP4crJsqeP0K5Y3aGrjYICiMQhBfkbwN/pbI1rZlNw=----ATTACHMENT:----MTI2NzM0MDM3NTQ4NjI1OCAxMTY3NzQxMzkwMzg5NTkxIDgwMjAxNzc4NjYwMjMxMTA=