/** * Método que gestiona las excepciones * @param \ErrorException $pExc Excepción * @return void */ public function handlerException($pExc) { // se desactiva el manejador de errores por si hay un // nuevo error en el hook de errores (recursividad infinita) $this->setHandler(false); // se conserva la excepción $this->currentException = $pExc; // se ejecuta/n el/los gancho/s de errores Tornado::getInstance()->hook('error'); // se finaliza la ejecución exit; }
/** * Método que ejecuta el módulo\controlador\acción\parámetros invocado * @param string $pModule Nombre del módulo * @param string $pController Nombre del controlador * @param string $pMethod Nombre del método * @param array $pParams Parámetros del método * @return boolean Resultado de la invocación */ public function callModule($pModule, $pController, $pMethod, $pParams = []) { // se ajustan los nombres $pModule = $this->parseModuleName($pModule); $pController = $this->parseModuleName($pController); $pMethod = lcfirst($this->parseModuleName($pMethod)); // se valida si la ruta de la clase solicitada existe $path = $this->pathModules . '/' . $pModule . '/Controller/' . $pController . '.php'; if (!file_exists($path)) { throw new \InvalidArgumentException('Module or Controller unknown.'); } //else { //require_once $path; // Autoload PSR-4 //} // se agrega el namespace al controlador $pController = $this->parseNamespace($this->pathModules) . '\\' . $pModule . '\\Controller\\' . $pController; // se valida si el método solicitado existe if (!method_exists($pController, $pMethod)) { throw new \InvalidArgumentException('Method unknown.'); } // se instancia el controlador $controller = new $pController(Tornado::getInstance()); // se ejecuta la acción junto a sus parámetros si existiesen call_user_func_array([$controller, $pMethod], $pParams); }