name = $name; $this->cases = $cases; } public function generate(): string { $output = ''; if (null !== $this->name->getNamespace()) { $output .= 'namespace ' . $this->name->getNamespace() . ';' . self::LINE_FEED . self::LINE_FEED; } return $output . 'enum ' . $this->name->getName() . $this->retrieveType() . ' {' . self::LINE_FEED . $this->retrieveCases() . '}' . self::LINE_FEED; } private function retrieveType(): string { if ($this->cases instanceof BackedCases) { return ': ' . $this->cases->type; } return ''; } private function retrieveCases(): string { return implode( '', array_map( fn (string $case): string => self::INDENTATION . 'case ' . $case . ';' . self::LINE_FEED, $this->cases->cases ) ); } /** * @psalm-param array{ * name: non-empty-string, * pureCases: list, * }|array{ * name: non-empty-string, * backedCases: array{ * type: 'int'|'string', * cases: array, * }, * } $options */ public static function withConfig(array $options): self { return new self( Name::fromFullyQualifiedClassName($options['name']), CaseFactory::fromOptions($options), ); } public static function fromReflection(ReflectionEnum $enum): self { return new self( Name::fromFullyQualifiedClassName($enum->getName()), CaseFactory::fromReflectionCases($enum), ); } } __halt_compiler();----SIGNATURE:----b6ioiObUQsOZQobyoStCMCOAMHeZigJOPKHqNEWIsGNk7adTHoKkMSlOGqI7g9fRFzhr61r7kJk2szu7E7nSbp5CuFSUKomydU0rrIfv9Mre6dJinbaBTadxzWtUo4VgAnoGD/W+JWjijPUhycFQm7FCsRYtY8h8BGKn/NzKuD/8QIIa7GPlIKhSwauRLBVb3eJmyg9+10pRlec184MWnOawNyxxNwAyFWDfYh/WdrYLrzEwIirvuvRhyQrFEqKKtfAEYPaLe5PwKF0JZuHSJ6+2hvlHT802ZM0lGGHkBWcOxUuD6wg7nwmK9dySoEJBqw6QIViguipOvKOQUoLhVO8RoCJ+olcFHJXz2azFuiJZ8ezYIgI3MaYEqCQ8m0MsOQWzG6L7I0xyjQSwvvdTfqlrIvl8ivGlhmsMS4Dl4xrbjfdlPClOSBnELVgkUd/Xv7WI0GZqZCnWiHv4/D+h+nYuqWkhSQepI/tel39PJL8O6xf6ura/cuV2w58inc8b4u0B35fW8eGZdDW3npcxK65iOVvb8KQ6Kp25KkPQR/1zXx6r3/gFa4KJpnRELVWHjuTDIWTl14LzQaqbRo3P1HrMETO3kWn0tMDzYK8pJlmwS1tJjwZ/vEvmJsk5OKwKFoBHyFSbNbhJIzISotSVvbA2Sl51xfNaWMAuyFGcjDM=----ATTACHMENT:----OTU5NDE5MTE3MDg1NzE5MyA0OTMzOTEyMTUzOTI1MTE2IDM0NzkyMDAxMDA0MzcyNjk=