null, 'password' => null]; public function getAuthentication(): array { return $this->authentication; } /** * @param array{ user?: string|null, password?: string|null, } $authentication */ private function setAuthentication(array $authentication): void { if (!empty($authentication)) { $this->authentication['user'] = $authentication['user'] ?? null; $this->authentication['password'] = $authentication['password'] ?? null; } } public function getUser(): ?string { return $this->authentication['user'] ?? null; } /** * @return static */ public function withUser(?string $user) { $new = clone $this; $new->authentication['user'] = $user; return $new; } public function getPassword(): ?string { return $this->authentication['password'] ?? null; } /** * @return static */ public function withPassword(?string $password) { $new = clone $this; $new->authentication['password'] = $password; return $new; } private function getUserInfoString(): string { $user = $this->getUser() ?? ''; $password = $this->getPassword() ?? ''; if ('' === $password && '' === $user) { return ''; } return $user.('' === $password ? '' : ':'.$password).'@'; } }