I've been working my way through the PHP MASTER sitepoint book and have found an issue that affects the singleton, trait and registry sections of the design patterns chapter of the book.

PHP Code:
class Database extends PDO
{
    private static 
$_instance null;
  
    private function 
__construct()
    {
        
parent::__construct(APP_DB_DSNAPP_DB_USERAPP_DB_PASSWORD);
    }
    ...

This throws a fatal error: Fatal error: Access level to Database::__construct() must be public (as in class PDO)

I'm ok with the principle that the lesson is teaching, but I'm just curious as to what others do to create a db/model class. Is it better to create the PDO object and pass it into the database object, assigning it to a private property for use?