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