/** * Use the action collaborators to get a response. * * @param Action $action * @param ServerRequestInterface $request * @param ResponseInterface $response * @return ResponseInterface */ private function getResponse(Action $action, ServerRequestInterface $request, ResponseInterface $response) { $domain = $this->resolve($action->getDomain()); $input = $this->resolve($action->getInput()); $responder = $this->resolve($action->getResponder()); $payload = $this->getPayload($domain, $input, $request); $response = $this->getResponseForPayload($responder, $request, $response, $payload); return $response; }
public function handle(Action $action, Request $request, Response $response) { $responder = $this->resolve($action->getResponder()); $domainSpec = $action->getDomain(); if (!$domainSpec) { return $responder($request, $response); } $domain = $this->resolve($domainSpec); $params = $this->params($action, $request); $payload = call_user_func_array($domain, $params); return $responder($request, $response, $payload); }