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;
 | |
|     }
 | |
| 
 | |
| } |