Som fejlen siger, kan du ikke bruge $this
uden for klassedefinitionen. For at bruge $_db
uden for klassedefinitionen skal du først gøre den public
i stedet for private
:
public $_db
Brug derefter denne kode:
$authDb = new AuthDb();
$authDb->_db->prepare($query); // rest of code is the same
--
Du skal forstå hvad $this
betyder faktisk. Når det bruges i en klassedefinition, $this
bruges til at henvise til et objekt i den pågældende klasse. Så hvis du havde en funktion foo
inde i AuthDB
, og du skulle have adgang til $_db
inde fra foo
, ville du bruge $this
for at fortælle PHP, at du vil have $_db
fra det samme objekt som foo
tilhører.
Du vil måske læse dette StackOverflow-spørgsmål:PHP:self vs $this