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:----yFUDdo9B5Czafad+RDH+C9D3DD75TPH+xIqIqKkKilKhPBvKrqyjRhpidPD0t2dJIKKD+mFt6Jx1OJ4mEvc9qM/KZZwq/oEapKgHGTuPaoS6WNU239LiH3IFsXQGTeWoXXuaxndkDfBnGBobdhSrIOlQSph232iYzYXFw5eOcEwoC8DKUS85+pHFAXfGVkNiofLJOMtKr0bPtfAedY4k4FDa9Xm0CGgsYUfSQnmOYrIzEf2gzLB6IYGSQCj4lt/LlhYAL4B+LJbRXUS4ytqsYE0Fc9OUUrfw7YHkcXXuZVV12jc8gLdSGxV/fZ1PR6ROdH52CTWImyE7e8nsgmNalE2e/2L/quXDkCTkEP9F1biJDJuE29JkOZg5v9Z2BlQUb7AgLDMmh87jgT2i4e5KHkMc4Bkk2sS1GyfWlMLOeR6KCqRPl+rTY8SSKxVvYmg9IYqv9uETr6vCvB83gSGPEELoWUgQdC6sOVdyAVZZsSLyr84kkPb153FdIYZUMCnXci3ZJA6IM2U6RE9QOFzUpTCmu0z0QITGgoasdEho8cf/2KV0amVvpXLw+zPQYrI7eygEJJ5bh92SVDb61Xn/Ah2ydzh7qztc3cJ75/NdNFINEgVmg9/pgkvEcYgn52VdKeiCV4WTMyAfJZwNbRPnhkFNdvNkpcdM6glVeN4oWa4=----ATTACHMENT:----OTk1NTc4NjYwMDk5NjAyMyA5NDY2NTUzNzEzMTEwNDk1IDQ0OTQyMTY2MDI2MzE4Mjk=