Jak chyba říká, nemůžete použít $this mimo definici třídy. Chcete-li použít $_db mimo definici třídy, nejprve ji udělejte public místo private :
public $_db
Poté použijte tento kód:
$authDb = new AuthDb();
$authDb->_db->prepare($query); // rest of code is the same
--
Musíte pochopit, co $this vlastně znamená. Při použití v definici třídy $this se používá k označení objektu této třídy. Pokud jste tedy měli funkci foo uvnitř AuthDB a potřebovali jste přístup k $_db zevnitř foo , použili byste $this říct PHP, že chcete $_db ze stejného objektu jako foo patří.
Možná si budete chtít přečíst tuto otázku StackOverflow:PHP:self vs $this