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:----hu3hB1Mt5ufcj0L+t0Jy/AqSWjUqPglHlrw5+esUYSJmmcMpBMKOjkdq4CLTqVNqK/UeXKUIwPYeiD5dpkrsp6djI6AuYZy/fDhwbnmp82QT/+miGUbviFzseQecEAiy6HrxmO5zXV3RJu2DwKZdIBWa3HVIXsbHPG9m/TCXNe2qKfVXqG35lESnGoQRiFoxuuZcqsZEjWuF4oWOAA6CpS34owD37q9YfBKKPBpQ3Le1/T6dCLBtOKFrjgnk3hsAzdo25LH2nBfg7HtcnKADmG2AVyWxTsVP6ainw3k7fQYr1Pd4KbwGzvIPZTaovzUUrmotZonJx6nnzbf9AF2EtlGqiYKZ2CuvjGFG18UREDhdrO4GepvXNaPyN3dTNCYVMCs24Fg0AgD+P2+/FcKS0IeMX6CALmPcr5BN6+DY99ci34HfBD8MMTnwhn68uTckXOI1DAFokKE6LsM0ZbvnYV6udsaHTOnLluv/7CZXePjpA3skRPY79ky3f04retJb1YXoSTT2GlM0vPzX7ItvYGCF4RVSrodBgqKD8APcYWt85M/NOVKe70rwv6ZChwddg0RFBr8Jbtv7iETBy8vBj7ig6U9wJ229/mNka4aRX8WW35ywJhNAEr2xh9HLbo3HwH6Bdz85yiqEEi/vaHTDj1WTGe5ydijdnfqlX2JVNXg=----ATTACHMENT:----MTI2MjA1MDMzMTA2MzY5MyA2NDc1MTg0NTE2NDQ0NDI3IDkzMjMwNDMzOTUxMTM4MTY=