Пример #1
0
 /**
 *  Dispatch a request from Apache
 *
 *  Called from file dispatch.php, which is invoked by
 *  {@link http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html Apache mod_rewrite}
 *  whenever a client makes a request.  Actions:
 *  <ol>
 *    <li>Remove forbidden tags and attributes from
 *      {@link http://www.php.net/reserved.variables#reserved.variables.get $_GET},
 *      {@link http://www.php.net/reserved.variables#reserved.variables.post $_POST} and
 *      {@link http://www.php.net/reserved.variables#reserved.variables.request $_REQUEST}.
 </li>
 *    <li>Start a session to keep track of state between requests from
 *      the client.</li>
 *    <li>Construct an ActionController to process the action.</li>
 *    <li>Process the route</li>
 *  </ol>
 *  @uses ActionController::__construct()
 *  @uses ActionController::process_route()
 *  @uses ActionController::process_with_exception()
 *  @uses InputFilter::process_all()
 *  @uses Session::start()
 */
 function dispatch()
 {
     if (TRAX_ENV != 'production') {
         $start = microtime(true);
     }
     try {
         InputFilter::process_all();
         Session::start();
         $ac = new ActionController();
         $ac->process_route();
     } catch (Exception $e) {
         ActionController::process_with_exception($e);
     }
     if (TRAX_ENV != 'production') {
         $duration = "(" . round((microtime(true) - $start) * 1000, 1) . "ms)";
         $url = parse_url($_SERVER['REQUEST_URI']);
         Trax::log("Rendered {$url['path']} {$duration}");
     }
 }
Пример #2
0
 /**
  *  Test process_route() with missing controller class
  */
 public function testProcess_route_missing_class()
 {
     //  read routes from config/routes.php
     $ac = new ActionController();
     //  this URL matches default route, but the controller
     //  file doesn't have a Noclass class
     $_SERVER['REDIRECT_URL'] = '/~haas/noclass/foo/bar';
     try {
         $ac->process_route();
     } catch (Exception $e) {
         return;
         $this->assertTrue(is_a($e, 'ActionControllerError'));
         $this->assertEquals('Error Message: Failed to instantiate' . ' controller object "noclass"', $e->getMessage());
         $this->assertEquals('Error Message: Failed to instantiate' . ' controller object "noclass"', $e->error_message);
         $this->assertEquals('ActionController error', $e->error_heading);
         $this->assertEquals('500', $e->error_code);
         return;
     }
     $this->fail('process_route() missing class exception not raised');
 }