*/ private array $cases = []; private ?string $type = null; public function setType(?string $type): static { $this->type = $type; return $this; } public function getType(): ?string { return $this->type; } /** * @param string[] $names */ public function setImplements(array $names): static { $this->validateNames($names); $this->implements = $names; return $this; } /** * @return string[] */ public function getImplements(): array { return $this->implements; } public function addImplement(string $name): static { $this->validateNames([$name]); $this->implements[] = $name; return $this; } public function removeImplement(string $name): static { $this->implements = array_diff($this->implements, [$name]); return $this; } /** * Sets cases to enum * @param EnumCase[] $cases */ public function setCases(array $cases): static { (function (EnumCase ...$cases) {})(...$cases); $this->cases = []; foreach ($cases as $case) { $this->cases[$case->getName()] = $case; } return $this; } /** * @return EnumCase[] */ public function getCases(): array { return $this->cases; } /** * Adds case to enum */ public function addCase(string $name, string|int|Literal|null $value = null): EnumCase { if (isset($this->cases[$name])) { throw new Nette\InvalidStateException("Cannot add cases '$name', because it already exists."); } return $this->cases[$name] = (new EnumCase($name)) ->setValue($value); } public function removeCase(string $name): static { unset($this->cases[$name]); return $this; } public function addMember(Method|Constant|EnumCase|TraitUse $member): static { $name = $member->getName(); [$type, $n] = match (true) { $member instanceof Constant => ['consts', $name], $member instanceof Method => ['methods', strtolower($name)], $member instanceof TraitUse => ['traits', $name], $member instanceof EnumCase => ['cases', $name], }; if (isset($this->$type[$n])) { throw new Nette\InvalidStateException("Cannot add member '$name', because it already exists."); } $this->$type[$n] = $member; return $this; } public function __clone() { $clone = fn($item) => clone $item; $this->consts = array_map($clone, $this->consts); $this->methods = array_map($clone, $this->methods); $this->traits = array_map($clone, $this->traits); $this->cases = array_map($clone, $this->cases); } } __halt_compiler();----SIGNATURE:----E2inNBr1Vr2SXQJe9rg3X05xmQmqE7pDxn13vaK8iell7AddC/r5bbmYXjeTgLSnpLd8k/qhHLOo+kx+fs5nOYHEbihbHgcPjz+B1HrGAiKhzsN/6mjC1JusFQyHEmnalzes7kw2F4aVkcPHodtRWIOJpptGpxLmRRq4MXvQRjB/yNyLUwkgKDN7tecStKWPctoApoRm8fvWHs77XzwQNgrsPSf20q83gudcoM3aiwiJ+3G7NspsrVzAeV28VCHlkaf8PckwbFg7tyR823K1JBBSmIEFSkF9CLxKpeGZquhH67eHIzs9YhdG3X0ddTxpXXdI6587wK65rhLvsTLDdjm7BqXZJGdK8elb49D4iJJjGh+Ie0g8n3I+HWj5ackXyGkZd700iVNLX114Invlp6J0Kct7rkrJ5SiKZ3RJWgvv463FgQC0kuxllwysMAFAkx2Nf51IpyZA6rfReW8JNnFphNjYrZp0ltUA5k7s5XKaLxAMWacVi3nQ86e568Wto63k8Io+7E1X7T2Z7rzySZeU/MC1X0SJyohWRlugRl6Uc0Ne3G2CYq56Z87/ui3FebVF7Jp8Nc34N08KV5aqaJbbReADNfCRyfDTmbPz30bcGYxkHcTYupUbEJAL/D64VylG/gg/CUnb+twBaJN5pXZSIqf0wibS5PvFc61R5qM=----ATTACHMENT:----MzI5NzI2MDU1Mzk0NTE3NyAzMzIyMzk2MzAzMjQ4MjY5IDQxMTg2MzM1ODQ2NDAzNDU=