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:----fc9VtYl75r3ZujR8CYEy9r3oaF70Nl+Atmu6bJa17qQg9n7E2mZa7Pzv7JOm1kqdR8NYk1UA1Tq8evDUSynNm2LEQAKYwvps+s1FjNltCcQswp7NoebLEcCqPOTTX3nfh5n5u9XJXaVcnbvX/VngVPafCtXFBBSoXwGvnzRv2u04Z0sieBMmCEXjvE74Zmm7SarwqsprO5mwYNb89puQ2ZJyIax9OOLH67TQfVfUP4WcoCWladtxf/aysJx4XpUa/MnHDI2ysA21zZDq054m/XVs/+gElwjvTWshqsLNSJc5fcojtD+H8YV7KUEGdtDzrf4C6OnbD+8kcBRQVFzLgsk5+CEcYB5jZ+a8x2lvSaXGwlop7Q/rqTiT0DU7tcC5u4uDvXBVTItG3ArpTeNHEJVu/MswmiFSqA0QzK5w7lPDrwC1o3K+RLveJ6jcEr2erkBLfVoP2pTc1/fZ9DoBiL5H5hh9dUz1Ej5enXU3N8kEU4EtY8/RK0di7g+OsHgVBdmxaUR1+FkUQNsS3VZ+Hp3eHKm9u1qJdTFUcFH0E8RoWDqltXEPZr2T5echnrntRwdhldqGQHe+7kWENmZ18hRrxA/E47v5yl0LqB2yNP0F7wf32X6AdUCj3IygdgjTc4hGSaaJt2evcEcnnRgH9cOxeQRBqlJ7BIsNl6xiOxw=----ATTACHMENT:----Njk0OTg0MTUzMjI4MzY4NSAzMzExMzYxNzcxODcxNjA2IDk1ODc3NzY4NTg3Nzg4MDQ=