Example #1
0
 /**
  * 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);
 }