/** * Instanciem la resposta * @param String $ruta */ public function __construct($ruta) { if ($ruta == '') { $ruta = '/'; } // Mirem si està registrada la ruta // Si hi ha post serà per post, ja que prima $metode = $_POST ? 'post' : 'get'; if ($controlador_accio_parametres = Ruta::existeix($ruta, $metode)) { $controlador = $controlador_accio_parametres['controlador']; $accio = $controlador_accio_parametres['accio']; $parametres = isset($controlador_accio_parametres['parametres']) ? $controlador_accio_parametres['parametres'] : array(); } else { header("HTTP/1.0 404 Not Found"); die('404'); } // todo: Si el controlador es camelCase transformar la ruta a camel-case $directori_controlador = directori('app') . 'controladors/' . $controlador . '.php'; if (file_exists($directori_controlador)) { require $directori_controlador; } elseif (is_callable($accio)) { $accio(); die('S\'ha executat una funció com a paràmetre'); } else { header("HTTP/1.0 404 Not Found"); die('404 - CONTROLADOR INEXISTENT'); } $name_controller = 'Controlador' . ucfirst($controlador); $controller = new $name_controller(); $controller->abans(); $action = $metode . ucfirst($accio); if (method_exists($controller, $action)) { $this->vista = call_user_func_array(array($controller, $action), $parametres); } else { header("HTTP/1.0 404 Not Found"); die('404'); } }