Tom: Datenbank-Klasse, Singleton-Pattern richtig angewendet?

Beitrag lesen

Hello,

Ich schreibe an einer PostgreSQL Datenbank-klasse in PHP.
Ich würde gerne das Singletonpattern für die Datenbankverbinung verwenden.
Können mir ein paar Hasen unter euch sagen ob ich das richtig mache? Hat jemand eine performantere Methode im Kopf?

private static $_db_connection;

public static function _getConnection(){ if(!self::$_db_connection=pg_connect("host=".$host." port=5432 dbname=".$name." user=".$user." password=".$pw])){
echo "Verbindung fehlgeschlagen!".pg_last_error();
}
return self::$_db_connection;
}

  
Das ist aber kein Singleton, was Du da gebastelt hast.  
  
Der Sinn eines Singletons ist, dass es nur eine einzige Instanz der Klasse gibt. Um dies zu erreichen, muss der Objektressource-Identifier statisch gespeichert werden.  
  
Wenn beim Instantiierungsversuch dann festgestellt wird, dass schon ein gültiger Identifier besteht (also einer <> NULL), dann wird dieser als Ergebnis zurückgeliefert. Anderenfalls muss der Konstruktor der Klasse aufgerufen werden und dann der neu erzeugte Identifier sowohl statisch gespeichert als auch zurückgeliefert werden.  
  
Der eigentliche Konstruktor der Klasse darf nicht erreichbar sein. Dafür gibt es dann die statische Instatiierungsfunktion. Die muss selbstverständlich public sein.  
  
<http://www.phpbar.de/w/Singleton>  
  
  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>