public static function run(Request $peticion) { $modulo = $peticion->getModulo(); $controller = $peticion->getControlador() . 'Controller'; $metodo = $peticion->getMetodo(); $args = $peticion->getArgs(); if ($modulo) { $rutaModulo = ROOT . 'controllers' . DS . $modulo . 'Controller.php'; if (is_readable($rutaModulo)) { require_once $rutaModulo; $rutaControlador = ROOT . 'modules' . DS . $modulo . DS . 'controllers' . DS . $controller . '.php'; } else { throw new Exception('Error de base de modulo'); } } else { $rutaControlador = ROOT . 'controllers' . DS . $controller . '.php'; } if (is_readable($rutaControlador)) { require_once $rutaControlador; $controller = new $controller(); if (is_callable(array($controller, $metodo))) { $metodo = $peticion->getMetodo(); } else { $metodo = 'index'; } if (isset($args)) { call_user_func_array(array($controller, $metodo), $args); } else { call_user_func(array($controller, $metodo)); } } else { throw new Exception('no encontrado'); } }
public static function run(Request $peticion) { $modulo = $peticion->getModulo(); $controller0 = $peticion->getControlador(); $controller = $controller0 . 'Controller'; $metodo = $peticion->getMetodo(); $args = $peticion->getArgs(); //throw new Exception($modulo.' '.$controller0.' '.$metodo); if ($modulo == false) { /* if($controller0 == false){ $folder = 'index'; }*/ $folder = $peticion->getFolder($controller0); } else { $folder = $peticion->getFolder($modulo); } //throw new Exception($folder); //si existe modulo entonces cargar el controlador del modulo if ($modulo) { $rutaModulo = ROOT . 'src' . DS . $folder . DS . '_modules' . DS . $modulo . DS . 'controllers' . DS . $controller . '.php'; //throw new Exception($rutaModulo); if (is_readable($rutaModulo)) { require_once $rutaModulo; $rutaControlador = ROOT . 'src' . DS . $folder . DS . '_modules' . DS . $modulo . DS . 'controllers' . DS . $controller . '.php'; } else { throw new Exception('Error de base de modulo'); } } else { $rutaControlador = ROOT . 'src' . DS . $folder . DS . 'controllers' . DS . $controller . '.php'; } //throw new Exception($rutaControlador); //si la ruta del controlador se puede leer, entonces se crea el controlador if (is_readable($rutaControlador)) { require_once $rutaControlador; //throw new Exception($rutaControlador . ' - ' . $controller); //Crea un nuevo objeto controllador, $controller = new $controller(); //se llama al metodo del controllador if (is_callable(array($controller, $metodo))) { $metodo = $peticion->getMetodo(); } else { //si no hay ningun metodo se llama all metodo index $metodo = 'index'; } // si hay argumentos entonces se llama al metodo con sus argumentos // PHP function: call_user_func if (isset($args)) { call_user_func_array(array($controller, $metodo), $args); } else { call_user_func(array($controller, $metodo)); } } else { //no se encuentra el controllador.. throw new Exception('no encontrado'); } }
public static function run(Request $peticion) { $modulo = $peticion->getModulo(); $controller = $peticion->getControlador() . 'Controller'; $rutaControlador = ROOT . 'controllers' . DS . $controller . '.php'; $metodo = $peticion->getMetodo(); $args = $peticion->getArgumentos(); if ($modulo) { $rutaModulo = ROOT . 'controllers' . DS . $modulo . 'Controller.php'; // comprueba si hay un controlador base. //el proposito del controlador base es que proporcione codigo para el modulo completo. //Los controladores que se pongan en el modulo heredan del controlador base. if (is_readable($rutaModulo)) { //comprobamos que la ruta es valida require_once $rutaModulo; //cuando usamos modulos buscan los controladores del modulo $rutaControlador = ROOT . 'modules' . DS . $modulo . DS . 'controllers' . DS . $controller . '.php'; } else { // si no valido tiramos una excepcion throw new Exception('Error de base de modulo'); } } else { // si no existe modulo la ruta controlador es: $rutaControlador = ROOT . 'controllers' . DS . $controller . '.php'; } if (is_readable($rutaControlador)) { //nos aseguramos que existe el archivo y es accesible require_once $rutaControlador; $controller = new $controller(); if (is_callable(array($controller, $metodo))) { //is_callable — Verificar que los contenidos de una variable puedan ser llamados como una función $metodo = $peticion->getMetodo(); } else { $metodo = 'index'; } if (isset($args)) { call_user_func(array($controller, $metodo), $args); //Llama a la llamada de retorno dada por el primer parámetro callback //y pasa los parámetros restantes como argumentos. } else { call_user_func(array($controller, $metodo)); } } else { throw new Exception("No encontrado"); } }