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; } private function createContent(string $view, array $data = []): false|string { ob_start(); foreach ($data as $key => $datum) { ${"$key"} = $datum; } include($this->viewPath . $view); $content = ob_get_contents(); ob_end_clean(); ob_start(); $file_content = $content; $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; } }