mirror of
				https://bitbucket.org/jsuto/piler.git
				synced 2025-10-31 03:02:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| class Front {
 | |
|    protected $error;
 | |
| 
 | |
|    private function sanitize_path($path){
 | |
|       return str_replace('../', '', $path); 
 | |
|    }
 | |
| 
 | |
| 
 | |
|    public function dispatch($action, $error){
 | |
|       $this->error = $error;
 | |
| 
 | |
|       $action = $this->execute($action);
 | |
| 
 | |
|       if($action) $this->execute($error);
 | |
|    }
 | |
| 
 | |
| 
 | |
|    private function execute($action) {
 | |
|       $file = DIR_APPLICATION . $this->sanitize_path($action->getClass()) . ".php";
 | |
|       $class = 'Controller' . preg_replace("/[^a-zA-Z0-9]/", "", $action->getClass());
 | |
| 
 | |
|       $method = $action->getMethod();
 | |
|       $args = $action->getArgs();
 | |
| 
 | |
| 
 | |
|       $action = NULL;
 | |
| 
 | |
|       if(file_exists($file)){
 | |
|          require_once($file);
 | |
| 
 | |
|          $controller = new $class();
 | |
| 
 | |
|          if(is_callable(array($controller, $method))){
 | |
|             $action = call_user_func_array(array($controller, $method), $args);
 | |
|          }
 | |
|          else {
 | |
|             $action = $this->error;
 | |
| 
 | |
|             $this->error = NULL;
 | |
|          }
 | |
|       }
 | |
|       else {
 | |
| 
 | |
| 
 | |
|          $action = $this->error;
 | |
| 
 | |
|          $this->error = NULL;
 | |
|       }
 | |
| 
 | |
| 
 | |
|       return $action;
 | |
|    }
 | |
| 
 | |
| 
 | |
| }
 | |
| 
 | |
| ?>
 |