Переменная объекта остается неопределенной после установки в конструкторе

Это код моего класса, только соответствующие части, конечно:

class User {
   public $id;

   public function __construct($email, $password, $firstName, $lastName) {
      $db = Connection::getInstance();

      // check if user exists
      $id = User::findUserByEmail($email);
      if($id > 0){
         // echo "User already exists!";
         return -1;
      }

      // Create new row in users table
      $stmt = $db->prepare("INSERT INTO `mapdb`.`user` (`email`, `password`, `firstName`, `lastName`)
                          VALUES (:email, :password, :firstName, :lastName);");
      $stmt->bindParam(':email', $email, PDO::PARAM_STR);
      $stmt->bindParam(':password', $password, PDO::PARAM_STR);
      $stmt->bindParam(':firstName', $firstName, PDO::PARAM_STR);
      $stmt->bindParam(':lastName', $firstName, PDO::PARAM_STR);
      $stmt->execute();

      // check f user added successfully
      $newID = User::findUserByEmail($email);

      if($newID > 0){
         echo "success, ID = ".$newID;
         $this->$id = $newID;
         // $this->$email = $email;
         // $this->$firstName = $firstName;
         // $this->$firstName = $firstName;
      } else {
         echo "failure";
         return -1;
      }
   }
}

И где я на самом деле называю конструктор:

$user = new User($email, $password, $firstName, $lastName);
echo "<br>userid: ".$user->id; // (<-- this doesn't echo correctly)

Я не могу получить значение из объекта User, что бы я ни пытался. На данный момент я получаю следующую ошибку:Примечание: неопределенная переменная: id

Что может лишить меня доступа к переменной?