Adventure,PHP,Framework,PageController,FrontController,Pattern,Objektorientierung,OO,Software,Design,Wiederverwendbarkeit,UML,Tutorial,Benchmark,ausgezeichnete Performance

Suche:    
Downloads  |  SVN!  |  Roadmap  |  Forum!  |  Bugtracking  |  Gästebuch  |  Backlinks!  |  Referenzen!  |  Sitemap  |  Impressum  
 
Deutsch | English Adventure PHP Framework  Bookmark @ Technorati Bookmark @ del.icio.us Bookmark @ Mr. Wong Bookmark @ Simpy Bookmark @ Google Bookmark @ Digg.com Adventure PHP Framework Seite 031-Klassenreferenz-connectionManager drucken!
«Vorherige Seite | Startseite | Nächste Seite »

Klassen-Referenz - connectionManager

Artikel bewerten:
Bitte bewerten Sie den Artikel per Klick auf einen der angezeigten Sterne:
Zurück zum Artikel!
Zweck des connectionManagers ist es, eine Konvention zu definieren, wie die Konfiguration und Implementierung einer Datenbank-Zugriffsschnittstelle gestaltet sein soll. Idealerweise ermöglicht diese Vorgehensweise einen einfachen Austausch einer Treiberschicht gegen eine andere um von einer Datenbank zur anderen zu wechseln.

Trotz, dass dieser Ansatz hinsichtlich der Unterschiede zwischen Datenbanken sehr ambitioniert ist, vereinheitlicht er dennoch die API und schafft ein gemeinsames Verständnis für den Zugriff der Datenschicht einer Applikation auf die Datenbank-Treiberschicht.


1. Konfiguration

Der connectionManager fungiert als Factory für konkrete Implementierungen eines Datenbanktreibers. Um den gewünschte Treiber laden zu können, muss dieser zunächst konfiguriert werden. Die geschieht in der Konfigurationsdatei
  /apps/config/core/database/{CONTEXT}/{ENVIRONMENT}_connections.ini
Details zu Konfigurationsdateien können dem Kapitel Konfiguration entnommen werden. Die Konfigurationsdatei enthält je eine Sektion für einen Treiber:
[Sektionsname]
DB.Host = ""
DB.User = ""
DB.Pass = ""
DB.Name = ""
DB.Type = ""
DB.DebugMode = ""
Der Sektionsname dient als Referenz für die Erstellung der Treiber-Instanz, DB.Host beinhaltet den Hostnamen des Datenbank-Server, DB.User und DB.Pass die Authentifizierungsdaten und DB.Name benennt die zu verwendende Datenbank. DB.Type dient zur Definition des zur verwendenen Treibers und DB.DebugMode entscheidet, ob der Debug-Modus des Treibers aktiviert werden soll oder nicht.


2. Anwendung

Um den connectionManager einsetzen zu können muss dieser zunächst per
  import('core::database','connectionManager'); 
eingebunden werden. Anschließend kann per
  $cM = &$this->__getServiceObject('core::database','connectionManager');
  
$DBTreiber = &$cM->getConnection('DBTreiber'); 
eins Instanz eines Datenbank-Treibers erzeugt werden.


3. Erweiterung

Gemäß der Definition der abstrakten Klasse AbstractDatabaseHandler können weitere Datenbank-Abstraktions-Klassen hinzugefügt werden. Um diese mit dem connectionManager verwenden zu können, müssen diese im Namespace core::database abgelegt werden und von der Klasse AbstractDatabaseHandler ableiten.


4. Vorhandene Treiberschichten

Das Framework liefert zwei Treiberschichten mit:
  • MySQLx: MySQL-Treiberschicht. Setzt auf die mysql_*-Funktionen auf
  • SQLite: SQLite-Treiberschicht. Setzt auf die sqlite_*-Funktionen. Hier ist PHP > 5.0.0 notwendig!

4.1. MySQL-Treiberschicht

Um eine Instanz des MySQL-Treibers erstellen zu können, ist folgende Konfiguration notwendig:
[MySQL]
DB.Host = "host"
DB.User = "user"
DB.Pass = "pass"
DB.Name = "name"
DB.Type = "MySQLx"
DB.DebugMode = "true|false"
Anschließend kann die Treiber-Instanz mit den Code-Zeilen
  $cM = &$this->__getServiceObject('core::database','connectionManager');
  
$MySQL = &$cM->getConnection('MySQL'); 
erzeugt werden. Die Treiberschicht wird aus Performance-Gründen dabei immer als Singleton-Objekt erstellt.


4.2. SQLite-Treiberschicht

Eine SQLite Treiberschicht kann mit dem Konfigurationseintrag
[SQLite]
DB.Name = "/path/to/my/database.sqlite"
DB.Type = "SQLite"
DB.DebugMode = "true|false"
und den Code-Zeilen
  $cM = &$this->__getServiceObject('core::database','connectionManager');
  
$SQLite = &$cM->getConnection('SQLite'); 
instanziiert werden. Bitte beachten Sie, dass im Fall von SQLite Host, User und Passwort nicht konfiguriert werden müssen, da SQLite eine integrierte Datenbank-Engine ist.


Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.


Für diesen Artikel liegen aktuell keine Kommentare vor.


Powered by WebRing.