/** * Main method. Initializes the application, * dispatches the request (selects controller and action), * runs the controller, and renders the view. * Passes back a response object with HTTP code, MIME-Header, * and page content. * Note: authentication controller will be called regardless of ACL. * * @return void */ public function execute() { $this->initApplication(); $controllerName = $this->applicationController->getControllerName($this->request); $class = $this->applicationController->getClass($controllerName); $method = $this->applicationController->getMethod($controllerName); $controller = $this->controllerFactory->getController($class); $result = $controller->execute($this->request, $this->response, $this->session, $this->authenticationAdapter, $method); if ('' == $result) { throw new FrontControllerException('Controller "' . $class . '" method "' . $method . '" returned empty result'); } // forward here if ($this->applicationController->isForward($controllerName, $result)) { $controller = $this->applicationController->getForward($controllerName, $result); // @todo allow multiple forwards, but avoid endless loops } $view = $this->applicationController->getView($controllerName, $result); return $view->render($this->request, $this->response); }