*/ 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:----V6dDMMMckypvF96ZOZaDUMY+M8PzQNMzTbTOSF3cHUsxjpObAAjS0TjyBCDg+Bk9hdK5tik1nCSzw6ptfLkbYoqqrK5KB32kGNc+tcqqbar3KQYWnmt65/AAyhYTO4xBr+dHgukB3V+Tz81dtHGzEZmIClXFJtRYxrRFIqRTntymkLdSlU/ZSvIyJKanUJUTtwuY2XfS1r2Eo4PqWkQ6yawVMeuTQciX6OO2w02JePnPMz6GUAks63/LKq8hzaabf4WRdHIJKnEB9NjfKpy1R0OblKu5sgEPXn4aDJ00V+xIK4poGUBnrxzS/yIkSHWnFwK0cONAVrr8IRBGzuCbnykkcVW7JTb7BCF2nTexvvjdlsKLDdRHVhI3USk8KBztfCAc7xtXo+m+BxUtHdAZRfTEDK0jCds0B7C3naeJdrJQx4C1IAzI5VsXRn5KrJhvlqYF9qJsvNMyoQZWbRs2HV8+FUH1oKpqPZulBaM0j5FcZcUt56xl3UribjisnXMAn5cUe56DhdfROi4YaLlchMxKw7/FJdpm3VpoyWz/Bz/d5/oXvf0WYz6hlgjPyWVGlPmDnPBohl3fWnstv9XYVDIW84SYRhAJ/jNe7LqQcfgAS/wRtRa/NWHweXUx0HW16V6iqeXbHxyRQkXKwx4AngBb5yUEnsOFX7BofZb7cwc=----ATTACHMENT:----ODM3NDI3OTQ4MDMxNjc4NiA0NjIyMzUwOTk3Nzg4NjgxIDYwNDQ5NjI3NTYyMzk2ODI=