Giống như lỗi cho biết, bạn không thể sử dụng $this bên ngoài định nghĩa lớp. Để sử dụng $_db bên ngoài định nghĩa lớp, trước tiên hãy đặt nó public thay vì private :
public $_db
Sau đó, sử dụng mã này:
$authDb = new AuthDb();
$authDb->_db->prepare($query); // rest of code is the same
-
Bạn phải hiểu $this là gì thực sự có nghĩa là. Khi được sử dụng bên trong định nghĩa lớp, $this được sử dụng để tham chiếu đến một đối tượng của lớp đó. Vì vậy, nếu bạn có một hàm foo bên trong AuthDB và bạn cần truy cập $_db từ bên trong foo , bạn sẽ sử dụng $this để cho PHP biết rằng bạn muốn $_db từ cùng một đối tượng foo thuộc về.
Bạn có thể muốn đọc câu hỏi StackOverflow này: PHP:self vs $ this