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:----rFdzgh6TQbxbNe5xu91f6PZzALhVhUgbPCvNE97arxsWt1b8Fze4kBa+62IozysmZH8vLOUyCKd87zLOzMFo8c2dDDTF0ix4jNdaJlKCdWO3rnVSRwcaw3J0p8tz7q+zpD7HJxb/7YoryXI4qJVGX4f4Lc3zl/Hc+oIJWE0y3TDp4DuRw3ElPIhOqtQorRu4Bttt2FLmonLUFkfVAc6+icZxS6lh3nOh8bG5oUNZf3YkKQjXmvmBuZgc0G1HBAN7fgainr8MmZ3HftH5DQCa7Z+lduDLzb2i8D89Kv4if5hGgrnICxDVebqdXQ2U+vJW3JUp1IuKiR2Znr8fv/U0j1bUvN9szrmK3eN8ucvv1OXeZiXm7BDTGSWX/pzw7lT6R2mL0YeJ2hJC6XEDmUvGoWJTcdbYIOtyhTFNolZWDlaHaXsLldxtYY0cacMdznKyuxsW0UQczfaid8IAX3NRKTTJ4Wyq6VjzI0cMg1aj/oNuKn5gLm3bRipxZbovx5TiFzGPxyyLz6GbO3gol334f93fCK84S68lNl5LoJJF+htL4n2JypC1xbNNuQ0Kwxk+lV+yBOp/8G6/UMqw4moKSfVUNFu0akzIdSlipDycX/ubFkNlAOGPip6crAM2P0PX6w0rGlZEpUJUCLtadZmncOhSNCI9nlzfBRLFPE4ctsE=----ATTACHMENT:----MzQxMDMzODE1MjIwODEyMSAyNDExNjY1MjQxNDczNiAxODk2ODM1OTYyMDU2MDcz