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