/** * @param callable|string $controller * @param array $vars * @param BaseRoute $route * * @throws \Exception * * @return ApiResponse */ public function dispatch(callable $controller, array $vars = [], BaseRoute $route = null) { if ($group = $route->getParentGroup()) { $this->response = (new PipelineProcessor())->handlePayload(new Payload($group, $this->request, $this->response))->getResponse(); } $this->response = (new PipelineProcessor())->handlePayload(new Payload($route, $this->request, $this->response))->getResponse(); return call_user_func_array($controller, [$this->request, $this->response, $vars]); }