username = $username; $this->password = $password; $this->method = $method; } public static function create(): self { return new self(); } /** * A username. */ public function getUsername(): ?string { return $this->username; } /** * A password or auth-token. */ public function getPassword(): ?string { return $this->password; } /** * A method. */ public function getMethod(): ?string { return $this->method; } /** * Authenticate by auth-token only. No username check. */ public function byTokenOnly(): bool { return $this->byTokenOnly; } public function withUsername(?string $username): self { $obj = clone $this; $obj->username = $username; return $obj; } public function withPassword(?string $password): self { $obj = clone $this; $obj->password = $password; return $obj; } public function withMethod(?string $method): self { $obj = clone $this; $obj->method = $method; return $obj; } public function withByTokenOnly(bool $byTokenOnly): self { $obj = clone $this; $obj->byTokenOnly = $byTokenOnly; return $obj; } }