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:----tgiPLkwAXuNgIT3b541lxe3/OeFfvvtLvlhwJoajSqA6huxgJwq0Nen+skN/g8+PP+RjD/mX6kKSWU4QtNC77gG5+w46Y1os/Zh3nDapLzyzFdqYLx0NfbO3BH8nQsIVHzG70a8pK0G5G5FbiRhPOV/EzMhQIvJmTfR+Z1R4ID/93UFJ5GLJrgocY0y85MwGHwINz5GzyQxtqqmsfCXQWUywwvFc4ESs3/ZvhYk2gOZxG/vDEYdg1R1Gah+KCjApNipBKbjQ6bA+4QPKuCuYV7vC4UzBkIcW+AzT2o1DFlbRPapP2EQHvkjzWpyyZUUG4UUZHX70NOCYA0WkbfWGKArkB7OqsVV7LrXbQ3eT+89OkFwXtBQouULuzYON1bJHfMEsOwflEg39Sgpmm5yX3e8l/OeXzNCOaev1qI7kSOPEj1AG14KgAHxsWD6pdQIu2A2bNwDH6dZLkMApx3ncPQFLmU6Md6Jg3TssdML5vrzIeNbASjtl2SDR5eiKUK8RQdVUN90JYL3vmiDCYi+BLiadrjWbcaYz7P92OaqmLgT6stZzJnzcOsia6kONrcEeFp3/+F5PQcMysl+0Wej5EfLF3o1rlc/TpsCLZhw+S/+E8xJTC2CbnHs2QIxYS5Ld5oXjnb5xKmtbadLmx8UZ6la6ofXgm2jWwZlAAFA2sF4=----ATTACHMENT:----ODk4MDI4MTY2Mzk5ODY5NyAyMjI1NDc3MzQxMTU2NTc0IDExNTkwNzU2MDk3NzE5MDY=