/** * @param \WoohooLabs\Yin\JsonApi\Request\RequestInterface $request * @param \Psr\Http\Message\ResponseInterface $response * @param callable $next * @return void|\Psr\Http\Message\ResponseInterface * @throws \Exception */ public function __invoke(RequestInterface $request, ResponseInterface $response, callable $next) { $callable = $request->getAttribute($this->handlerAttribute); if ($callable === null) { return $this->getDispatchErrorResponse($response); } $jsonApi = new JsonApi($request, $response, $this->exceptionFactory, $this->serializer); if (is_array($callable) && is_string($callable[0])) { $object = $this->container !== null ? $this->container->get($callable[0]) : new $callable[0](); $response = $object->{$callable[1]}($jsonApi); } else { if (!is_callable($callable)) { $callable = $this->container->get($callable); } $response = call_user_func($callable, $jsonApi); } return $next($request, $response); }