/** * Dispatch the current request * * @param Controller_Request $request An (optional) controller * request to dispatch * * @return void */ public function dispatch() { require APPLICATION_DIR . '/config/routes.php'; try { $request = new Request(); $tmp = $request->getPathArray(); $controller = null; if (isset($tmp[1]) && strlen(trim($tmp[1])) > 0) { $controller = $tmp[1]; } if (isset($controller)) { if (array_key_exists($controller, $route)) { $c = new $route[$controller]($request, $this->response); if ($c->{$controller}()->isCallable()) { $c->{$controller}; } else { throw new Exception('Route was found but it is not callable.'); } } else { throw new Exception('No matching route.'); } } else { throw new Exception('Invalid call.'); } } catch (Exception $e) { $this->handleException($e); } unset($route); }