fromMethodReflection(Nette\Utils\Callback::toReflection($method)); } public function __toString(): string { try { return (new Printer)->printMethod($this); } catch (\Throwable $e) { trigger_error('Exception in ' . __METHOD__ . "(): {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", E_USER_ERROR); } } /** * @return static */ public function setBody(?string $code, array $args = null): self { $this->body = $args === null || $code === null ? $code : Helpers::formatArgs($code, $args); return $this; } public function getBody(): ?string { return $this->body; } /** * @return static */ public function setStatic(bool $state = true): self { $this->static = $state; return $this; } public function isStatic(): bool { return $this->static; } /** * @return static */ public function setFinal(bool $state = true): self { $this->final = $state; return $this; } public function isFinal(): bool { return $this->final; } /** * @return static */ public function setAbstract(bool $state = true): self { $this->abstract = $state; return $this; } public function isAbstract(): bool { return $this->abstract; } /** * @throws Nette\InvalidStateException */ public function validate(): void { if ($this->abstract && ($this->final || $this->visibility === ClassType::VISIBILITY_PRIVATE)) { throw new Nette\InvalidStateException('Method cannot be abstract and final or private.'); } } }