56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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;
 | 
						|
    }
 | 
						|
 | 
						|
} |