public static function dispatch(rtAppConfig $config) { // Load the project's config Rythm::init(); // Load the application's config // Route the request rtRoute::route(); //============================================================ // Start Handle the request //============================================================ // Initial middleware classes $middleware_classes = rtConfig::get('middlewares', array()); $middlewares = array(); foreach ($middleware_classes as $middleware_class) { require_once "middleware/{$middleware_class}.php"; $middlewares[] = new $middleware_class(); } // =========================================== // middleware start process request $request = rtRequest::getInstance(); foreach ($middlewares as $middleware) { if (method_exists($middleware, 'process_request')) { $middleware->process_request($request); } } // middleware end process request // =========================================== // Core Process $controller = $request->getController(); $action = $request->getAction(); $controller_class = ucfirst($controller) . 'Controller'; if (!class_exists($controller_class)) { throw new rtException("Can't find Controller: {$controller_class}"); } $controller = new $controller_class(); if (!$controller instanceof rtController) { throw new rtException("Controller:{$controller_class} must extend from rtController class"); } $controller->execute($action . 'Action', $request); // End Core Process // =========================================== // start process response $response = rtResponse::getInstance(); // response middleware process in the reverse direction foreach (array_reverse($middlewares) as $middleware) { if (method_exists($middleware, 'process_response')) { $middleware->process_response($response); } } // end process response }
<?php require_once 'config/AppConfig.class.php'; AppConfig::getAppConfig('rblog', 'dev'); Rythm::init(); // Include your Doctrine configuration/setup here, your connections, models, etc. // Configure Doctrine Cli // Normally these are arguments to the cli tasks but if they are set here the arguments will be auto-filled and are not required for you to enter them. $config = array('data_fixtures_path' => '/path/to/data/fixtures', 'models_path' => rtConfig::get('rt_project_dir') . DS . 'lib' . DS . 'models', 'migrations_path' => ROOT_DIR . DS . 'data' . DS . 'migrations', 'sql_path' => rtConfig::get('rt_data_dir') . DS . 'sql', 'yaml_schema_path' => rtConfig::get('rt_config_dir') . DS . 'schema.yml'); $cli = new Doctrine_Cli($config); $cli->run($_SERVER['argv']);