Класс, расширяющий PDO - конструкция parent :: __ не работает, но создание нового PDO работает

Я пытаюсь написать оболочку PDO, но у меня проблемы с конструктором. В идеале я хотел бы вызвать родительский конструктор, но по какой-то причине он не работает. Я попытался (проверить), чтобы проверить, создается ли новый PDO, и это действительно работает, что меня больше всего сбивает с толку.

Вот мой код:

class db extends PDO {

    private $dbconn;

    public function __construct() {
        $dsn = 'mysql:dbname=' . MYSQL_DB . ';host=' . MYSQL_HOST;
        $user = MYSQL_USER;
        $pw = MYSQL_PW;
        try {
            $this->dbconn = parent::__construct($dsn, $user, $pw);
            $this->dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $this->dbconn;
        }
        catch(PDOException $e) {
            echo 'Connection failed: ' . $e->getMessage();;
        }


    }
}

Он работает, если я заменяю parent :: строка с $ this-> dbconn = new PDO ($ dsn, $ user, $ pw);

Я считаю, что «правильный / элегантный» способ сделать это - использовать parent :: синтаксис, поэтому я хотел бы знать, почему он не работает / как я могу это исправить. Кто-нибудь может помочь?

Спасибо!

5
задан PeeHaa 22 November 2011 в 20:12
поделиться