core('session.'.Config::$items['session']['driver']); $transporter = IoC::container()->core('session.transporter'); Session\Manager::start($driver, $transporter); } /** * Manually load some core classes that are used on every request * This allows to avoid using the loader for these classes. */ require SYS_PATH.'response'.EXT; require SYS_PATH.'routing/route'.EXT; require SYS_PATH.'routing/router'.EXT; require SYS_PATH.'routing/loader'.EXT; require SYS_PATH.'routing/filter'.EXT; /** * Route the request to the proper route in the application. If a * route is found, the route will be called with the current request * instance. If no route is found, the 404 response will be returned * to the browser. */ Routing\Filter::register(require APP_PATH.'filters'.EXT); $request = IoC::container()->core('request'); $request->route = IoC::container()->core('routing.router')->route($request); if ( ! is_null($request->route)) { $response = $request->route->call(); } else { $response = Response::error('404'); } /** * Stringify the response. We need to force the response to be * stringed before closing the session, since the developer may * be using the session within their views, so we cannot age * the session data until the view is rendered. */ $response->content = $response->render(); /** * Close the session and write the active payload to persistent * storage. The input for the current request is also flashed * to the session so it will be available for the next request * via the Input::old method. */ if (Config::$items['session']['driver'] !== '') { Session\Manager::close(); } /** * Finally, we can send the response to the browser. */ $response->send();