Intereting Posts

Неустранимая ошибка: использование $ this, если не в объектном контексте в

У меня есть этот класс для подключения к базе данных mysql с помощью 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); } } с 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); } } 

теперь у меня есть страница для пользователя списка:

 require_once 'classes/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; } 

теперь, я вижу эту ошибку:

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

Как исправить эту ошибку ?!

Как и ошибка, вы не можете использовать $this вне определения класса. Чтобы использовать $_db вне определения класса, сначала сделайте его public а не private :

public $_db

Затем используйте этот код:

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

Вы должны понимать, что $this означает. При использовании внутри определения класса $this используется для ссылки на объект этого класса. Поэтому, если у вас есть функция foo внутри AuthDB , и вам нужно было получить доступ к $_db из foo , вы бы использовали $this чтобы сообщить PHP, что хотите $_db от того же объекта, к которому принадлежит foo .

Возможно, вы захотите прочитать этот вопрос StackOverflow: PHP: self vs $ this