public function init() { $uri = new Uri(); $router = new Router($uri); $routeRule = $router->findRoute(); $this->currentController = $routeRule->getController(); $this->requestContext->setCurrentController($this->currentController); $this->currentAction = $routeRule->isActionRequired() ? $routeRule->getAction() : $uri->getAction(); $this->sessionInitializer->startSession(); $this->currentControllerObject = $this->controllerFactory->createController($routeRule); $this->requestContext->setCurrentControllerObject($this->currentControllerObject); $this->_logRequest(); $afterInitCallback = Config::getValue('callback', 'afterControllerInit'); if ($afterInitCallback) { Functions::call($afterInitCallback, array()); } try { ob_start(); $this->_invokeControllerMethods(); } catch (Exception $e) { ob_end_clean(); throw $e; } ob_end_flush(); }