/**
  * @param UserIdentifier $userIdentifier
  * @param Username       $username
  * @param HashedPassword $hashedPassword
  * @param \DateTime      $at
  */
 public function __construct(UserIdentifier $userIdentifier, Username $username, HashedPassword $hashedPassword, \DateTime $at)
 {
     $this->userIdentifier = $userIdentifier->toString();
     $this->username = $username->toString();
     $this->at = $at->format('UTC');
     $this->hashedPassword = $hashedPassword->toString();
 }
 /**
  * @param UserIdentifier $userIdentifier
  * @param Username       $username
  */
 private function updateUsername(UserIdentifier $userIdentifier, Username $username)
 {
     $sql = 'UPDATE ' . $this->tableName . ' SET username = :username WHERE user_id = :user_id';
     $statement = $this->pdo->prepare($sql);
     $statement->bindValue(':user_id', $userIdentifier->toString());
     $statement->bindValue(':username', $username->toString());
     $statement->execute();
 }
 /**
  * @param UserIdentifier $userIdentifier
  * @param Username       $newUsername
  * @param \DateTime      $at
  */
 public function __construct(UserIdentifier $userIdentifier, Username $newUsername, \DateTime $at)
 {
     $this->userIdentifier = $userIdentifier->toString();
     $this->newUsername = $newUsername->toString();
     $this->at = $at->format('UTC');
 }