, * }|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:----Dd/DbCOrvhDN56uNjb0xpA8xQtr53r1kMDKaDNNpZYFjXyR9Znu0cTsDStYJNQUc3ZZ3GjfyFVDpAWZ5l35K11rxKona6FgQfyeCpokncy4yyvwPKl2ShIGWA35wADNvVyoZpS2yPxONje/odS+XVXfOUZWcMvnplUCyLHhYSnGB10hJLhjBfPdLbxTvPS/zJAaeoMOglW/ANr7qGT+BFIQb2EKAUYFm/U2TCBJLUtn9HFomPlDikqBKno3dnyRoTCPHklgvIvDXe4jejt+yhmsb88OUVioEp429uW+qQV7PElzbb++D1Uch+o/B7Xv2AZuW2Kou6VSGy/q5LlYx2tN5ocsl6K3vuosvY4W2VcY3oSlS4mbOwJQNvZRWJySrCS5tGiQy9gk6/BgP6xZsMcXM69aY/5MCdKLqVXB6LyTR4jti7f38YBbo0jY38qPvtkAPYVVeuB3vXPTOwt2QkoITKUBtrX3bPfN1/MRtI6/h4TAdvyclphrycTY2Yk6SKjrDrKPnEDTu7YG5KBuY56xyeKytYnSc7+fZa+jxciVo1WeZ3bgfbwx5Wie/EmcZAzm78768PlxiMVMNuz8IPERQLHGEFWTyL3YllzW9a4+0G5KGxxdHlaY8Kme9Qna/a0jaPph2WQ2wHIJYUkqru2guGCx/7vjrvfh6kOXyDiQ=----ATTACHMENT:----NTM2MTM4OTM3NDUyMzYwNyA0MDQ3MjQyNjgyODUwNjcwIDU4NzEwNjU1MTQzNzkyNDM=