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:----JXWriFcOMnY2d1QJ6XYouuQFlFvUs1iqyrcIhtYBBU6eikLfptXiLxXUJv0pEZ2FJYwz1fAow+j3w7EefQHN11XzEOZPSxamL6nxPoNMA8+ukg+96NU2kkjwzLikYKZnK94gzj5+hUUwjC9AWg7fwIdY00UO7B+HBl47wFvsXDm+Bn7iyvdnyGdK0v0Aco7LZb5svFc9m8qdYazIiYMhfr9FpBn0OzRmUED/+NbrWtZM99Pe5j5aIxcS23KABqxng48V15y50gEidJks1P3lCqcCGLhFqaHLmGxS+H+NV7UKjYT+udVOmFo7slvwH6vhBL1OsOubNxvoU7ir7Ski61M4z8xaKtdvXvcXz4wLb5LXsYZKGDbMb+wxKrBA/5aSOSfjugRaV65v3Uq4MAHAm6nX1Qgxa7myE8ToHH5OKbXX0t2x73CLBnwuF7SurJi/dTyrmN/xUPjQa36zZKfnKsytE5hqYTIkIln/SjwrCendeC/3YxdKrKqLMMZbiBZpmEO2ubEyJqlXgSzbp0q+QqjMyk1lWrTqnnx9SVPNkVbfADSd99X2LRHnyOqkjRtkv9+mXXYZU+znZMCqU0CR/JkzncYJDGK3Qm8pXl6fyA/z3EjL76wMzA/HWe9FtQmI8ZWHHFwMVwQC2jIi9Nk4GuijRv2iJneAy5/q6qCbGQg=----ATTACHMENT:----NTQzNzIxNDc0NTA5MTQzNyA0Mzc2NzU5MTcyMzIzNDQyIDMzODAzMzM5ODY3NTc5MjM=