Adicionando controlador de erro(404) MVC
Olá iMasters, eu estava parado com programação mas agora eu estou aprendendo(ainda) sobre MVC Design Patterns, não quero fazer uso de Frameworks já que é para aprendizagem e entendimento.
Gostaria de adicionar um controlador de erro caso o controller ou a action(método) não exista, mas estou a duas horas quebrando a cabeça com este código. Alguém poderia me ajudar?
<?phpclass Start{ private $_controller; private $_action; private $_params = array(); public function __construct() { $this->parse(); $path = './app/controllers/' . ucfirst($this->_controller) . '.php'; if (file_exists($path)) { require_once $path; $this->_controller = new $this->_controller(); if ($this->_params[2]) { $this->_controller->{$this->_action}($this->_params[0], $this->_params[1], $this->_params[2]); } elseif ($this->_params[1]) { $this->_controller->{$this->_action}($this->_params[0], $this->_params[1]); } elseif ($this->_params[0]) { $this->_controller->{$this->_action}($this->_params[0]); } else { //aqui seria o controller de erro, mas não da certo $this->error(); } } else { //acho que aqui também viria o controller de erro, mas também não da certo. $this->error(); } } private function parse() { $url = (isset($_GET['url'])) ? $_GET['url'] : null; $url = array_filter(explode('/', $url, FILTER_SANITIZE_URL)); $this->_controller = (isset($url[0])) ? $url[0] : null; $this->_action = (isset($url[1])) ? $url[1] : null; $this->_params[0] = (isset($url[2])) ? $url[2] : null; $this->_params[1] = (isset($url[3])) ? $url[3] : null; $this->_params[2] = (isset($url[4])) ? $url[4] : null; // var_dump($this->_controller); // var_dump($this->_action); // var_dump($this->_params); } private function error() { require_once './app/controllers/Error.php'; $error = new Error(); $error->index(); }}
Alguém ?
Discussão (1)
Carregando comentários...