basedir = $basedir; $this->name = $name; } public function parent(string $parent): TemplateBuilder { $this->parent = $parent; return $this; } public function vars(array $vars): TemplateBuilder { foreach ($vars as $key => $val) { $this->vars[$key] = htmlspecialchars(strval($val)); } return $this; } public function var(string $key, string $val): TemplateBuilder { $this->vars[$key] = htmlspecialchars($val); return $this; } public function unsafeVar(string $key, string $val): TemplateBuilder { $this->vars[$key] = $val; return $this; } public function render(): void { $v = new TemplateVarArray($this->vars); $basepath = $this->basedir.DIRECTORY_SEPARATOR; if ($this->parent == null) { require $basepath.$this->name; } else { $v['child-template'] = $basepath.$this->name; require $basepath.$this->parent; } } }