/** * @param Oxygen_Http_Request $request * @param Oxygen_Util_RequestData $requestData * * @return Oxygen_Util_HookedClosure|Oxygen_Http_Response * @throws Oxygen_Exception */ public function handle(Oxygen_Http_Request $request, $requestData) { $actionDefinition = $this->actionRegistry->getDefinition($requestData->actionName); $hookName = $actionDefinition->getOption('hook_name'); if ($hookName === null) { return $this->handleRaw($request, $requestData, $actionDefinition->getClass(), $actionDefinition->getMethod(), $requestData->actionParameters); } $actionClosure = new Oxygen_Util_Closure(array($this, 'handleRaw'), $request, $requestData, $actionDefinition->getClass(), $actionDefinition->getMethod(), $requestData->actionParameters); return new Oxygen_Util_HookedClosure($hookName, $actionClosure->getCallable()); }