createContent($view, $data); echo $content; } public function fetch(string $view, array $data = []): false|string { $content = $this->createContent($view, $data); return $content; } public function addVarToLayout($key, $value): void { $this->varToLayout[$key] = $value; } public function setTitle(string $title): void { $this->addVarToLayout('title', $title); } public function setMeta(array $meta): void { foreach ($meta as $key => $value){ $this->metaArr[$key] = $value; } } public function getMeta(): string { $meta = ""; foreach ($this->metaArr as $key => $value){ $meta .= ""; } return $meta; } private function createContent(string $viewFile, array $data = []): false|string { ob_start(); $view = $this; foreach ($data as $key => $datum) { ${"$key"} = $datum; } include($this->viewPath . $viewFile); $content = ob_get_contents(); ob_end_clean(); ob_start(); $file_content = $content; if (!isset($title)){ $title = "No Title"; } $layoutPath = $this->viewPath; if ($this->layout) { if ($this->layoutPath !== '') { $layoutPath = $this->layoutPath; } if (file_exists($layoutPath . $this->layout)) { if ($this->varToLayout){ foreach ($this->varToLayout as $key => $datum) { ${"$key"} = $datum; } } include($layoutPath . $this->layout); $file_content = ob_get_contents(); } } ob_end_clean(); return $file_content; } }