Object Variable Remains Undefined after being Set

2019-09-21 05:07发布

问题:

This is the code of my class, only relevant parts of course:

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;
      }
   }
}

And where I actually call the constructor:

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

I cannot get the value from the User object whatever I try. At the moment I get the following error: Notice: Undefined variable: id

What could possibly deny me access from the variable?

回答1:

Problem solved, instead of

$this->$id = $newID;

I should have

$this->id = $newID;

Thank goodness for stackoverflow :D



标签: php oop