call = $call; $this->settings = $settings; $this->middleware = $middleware; } /** * @return callable */ public function getCall(): callable { return $this->call; } /** * @return array */ public function getSettings(): array { return $this->settings; } /** * @return mixed */ public function getMiddleware() { return $this->middleware; } public function withMiddleware($middleware): Handle { return new static($this->call, $this->settings, array_merge($this->middleware, [$middleware])); } public function mergeWithSettings($settings): Handle { return new static($this->call, array_merge($this->settings, $settings), $this->middleware); } public function withSettings($settings): Handle { return new static($this->call, $settings, $this->middleware); } public function withPrependedMiddleware($middlewares): Handle { return new static($this->call, $this->settings, array_merge($middlewares, $this->middleware)); } }