Daniel G.: Access level to PDO_Class::__construct() must be public

Hi

ich möchte das Entwurfsmuster Singleton mit PDO verwenden

meine Klasse sieht wie folgt aus

class PDO_Class  
    extends PDO  
{  
  
    private static $instance = null;  
  
    private function __construct()  
    {  
        parent::PDO(_DSN);  
    }  
  
    private function __clone()  
    {  
    }  
  
    public static function getInstance()  
    {  
      if (self::$instance === NULL){  
          self::$instance = new PDO_Class;  
      }  
      return self::$instance;  
    }  
  
} #Zeile 89

ich habe auch schon parent::__construct(_DSN); probiert, jedoch erhalte ich die selbe Fehlermeldung

Fatal error: Access level to PDO_Class::__construct() must be public (as in class PDO) in /home/xxx/xxx/xxx/class/class.PDO_Class.php on line 89

wie kann ich das Problem lösen?

danke
Daniel

  1. echo $begrüßung;

    Fatal error: Access level to PDO_Class::__construct() must be public (as in class PDO) in /home/xxx/xxx/xxx/class/class.PDO_Class.php on line 89
    wie kann ich das Problem lösen?

    Auf dem Wege gar nicht. Der Konstruktor ist bereits in PDO als public deklariert. Seine Sichtbarkeit geht nun nicht wieder herabzusetzen. Das wäre auch aus deiner Singleton-Sicht nicht sinnvoll, weil man, deine Klasse ignorierend, ja einfach PDO instantiieren kann.

    echo "$verabschiedung $name";

    1. Moin!

      Fatal error: Access level to PDO_Class::__construct() must be public (as in class PDO) in /home/xxx/xxx/xxx/class/class.PDO_Class.php on line 89
      wie kann ich das Problem lösen?

      Auf dem Wege gar nicht. Der Konstruktor ist bereits in PDO als public deklariert. Seine Sichtbarkeit geht nun nicht wieder herabzusetzen. Das wäre auch aus deiner Singleton-Sicht nicht sinnvoll, weil man, deine Klasse ignorierend, ja einfach PDO instantiieren kann.

      Merke: Das ganze public/protected/private-Gedöns kann man sich auch komplett sparen, wenn man von sich aus "vernünftig" programmiert (so wie in PHP 4 OOP). Es ist lediglich eine zusätzliche Schicht, die man nutzen kann, um sich gegen gewisse Fehler abzusichern. Und gegen andere eben nicht. Und gegen manche "will" man's nicht, so wie hier.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."