77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace kernel;
 | 
						|
 | 
						|
class CgView
 | 
						|
{
 | 
						|
    public string $viewPath = '';
 | 
						|
 | 
						|
    public string $layoutPath = '';
 | 
						|
    public array $varToLayout = [];
 | 
						|
    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;
 | 
						|
    }
 | 
						|
 | 
						|
    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;
 | 
						|
    }
 | 
						|
 | 
						|
} |