Erro fatal: usando $ this quando não estiver no contexto do object em

Eu tenho essa class para se conectar ao database mysql usando php / mysqli :

 class AuthDB { private $_db; public function __construct() { $this->_db = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME) or die("Problem connect to db. Error: ". mysqli_error()); } public function __destruct() { $this->_db->close(); unset($this->_db); } } 

agora, eu tenho uma página para o usuário da lista:

 require_once 'classs/AuthDB.class.php'; session_start(); $this->_db = new AuthDB(); // error For This LINE $query = "SELECT Id, user_salt, password, is_active, is_verified FROM Users where email = ?"; $stmt = $this->_db->prepare($query); //bind parameters $stmt->bind_param("s", $email); //execute statements if ($stmt->execute()) { //bind result columnts $stmt->bind_result($id, $salt, $pass, $active, $ver); //fetch first row of results $stmt->fetch(); echo $id; } 

agora, eu vejo esse erro:

 Fatal error: Using $this when not in object context in LINE 6 

Como corrigir esse erro ?!

Como o erro diz, você não pode usar $this fora da definição da class. Para usar $_db fora da definição de class, primeiro torne public vez de private :

public $_db

Em seguida, use este código:

 $authDb = new AuthDb(); $authDb->_db->prepare($query); // rest of code is the same 

Você precisa entender o que $this realmente significa. Quando usado dentro de uma definição de class, $this é usado para se referir a um object dessa class. Então, se você tivesse uma function dentro do AuthDB , e você precisava acessar $_db dentro do foo , você usaria $this para dizer ao PHP que você quer o $_db do mesmo object ao qual foo pertence.

Você pode querer ler esta pergunta StackOverflow: PHP: auto vs $ this