Jak mówi błąd, nie możesz użyć $this
poza definicją klasy. Aby użyć $_db
poza definicją klasy, najpierw ustaw ją public
zamiast private
:
public $_db
Następnie użyj tego kodu:
$authDb = new AuthDb();
$authDb->_db->prepare($query); // rest of code is the same
--
Musisz zrozumieć, co $this
faktycznie oznacza. W przypadku użycia wewnątrz definicji klasy, $this
jest używany w odniesieniu do obiektu tej klasy. Więc jeśli masz funkcję foo
wewnątrz AuthDB
, i trzeba było uzyskać dostęp do $_db
z wnętrza foo
, użyjesz $this
aby powiedzieć PHP, że chcesz $_db
z tego samego obiektu, co foo
należy do.
Możesz przeczytać to pytanie StackOverflow:PHP:self vs $this