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