<?php

namespace kernel;

class CgView
{
    public string $viewPath = '';
    public bool|string $layout = false;

    public function __construct()
    {

    }

    public function render(string $view, array $data = []): void
    {
        $content = $this->createContent($view, $data);

        echo $content;
    }

    public function fetch(string $view, array $data = []): false|string
    {
        $content = $this->createContent($view, $data);

        return $content;
    }

    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;

        if ($this->layout){
            if (file_exists($this->viewPath . $this->layout)){
                include ($this->viewPath . $this->layout);
                $file_content = ob_get_contents();
            }
        }
        ob_end_clean ();

        return $file_content;
    }

}