message = $message; $this->failReason = $failReason; $this->token = $token; $this->view = $view; $this->loggedUser = $loggedUser; } public static function create(): self { return new self(); } public static function createWithFailReason(string $failReason): self { return new self(null, $failReason); } public static function createWithMessage(string $message): self { return new self($message); } public static function fromArray(array $data): self { return new self( $data['message'] ?? null, $data['failReason'] ?? null, $data['token'] ?? null, $data['view'] ?? null, $data['loggedUser'] ?? null ); } public function getLoggedUser(): ?User { return $this->loggedUser; } public function getStatus(): string { return $this->status; } public function getView(): ?string { return $this->view; } public function getMessage(): ?string { return $this->message; } public function getToken(): ?string { return $this->token; } public function getFailReason(): ?string { return $this->failReason; } public function withMessage(?string $message): self { $obj = clone $this; $obj->message = $message; return $obj; } public function withFailReason(?string $failReason): self { $obj = clone $this; $obj->failReason = $failReason; return $obj; } public function withToken(?string $token): self { $obj = clone $this; $obj->token = $token; return $obj; } public function withView(?string $view): self { $obj = clone $this; $obj->view = $view; return $obj; } public function withLoggedUser(?User $loggedUser): self { $obj = clone $this; $obj->loggedUser = $loggedUser; return $obj; } }