/** * This method return a singleton instance of __HistoryManager instance * * @return __HistoryManager */ public static function &getInstance() { if (self::$_instance == null) { // Use "Lazy initialization" self::$_instance = new __HistoryManager(); } return self::$_instance; }
/** * This method dispatch the current request * * @param __IRequest &$request The request to process to * @param __IResponse &$response The instance to set the response to * */ public function processRequest(__IRequest &$request, __IResponse &$response) { //resolve action identity from request $action_identity = $request->getActionIdentity(); //resolve the action controller associated to the given action identity $controller_definition = __ActionControllerResolver::getInstance()->getActionControllerDefinition($action_identity->getControllerCode()); //check if action controller is requestable if ($controller_definition instanceof __ActionControllerDefinition && $controller_definition->isRequestable()) { __HistoryManager::getInstance()->addRequest($request); //last, execute the action controller __ActionDispatcher::getInstance()->dispatch($action_identity); } else { throw __ExceptionFactory::getInstance()->createException('ERR_ACTION_NON_REQUESTABLE'); } }