Quicknavi |
|
Klassen-Referenz - connectionManager
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
Bitte geben Sie Ihren Kommentar hier ein. Füllen Sie alle mit * gekennzeichneten Felder vollständig und korrekt aus. Um zum Artikel zurückzukehren klicken sie bitte hier. Zur Formatierung des Textes können folgende BBCode-ähnliche die Zeichen verwendet werden:- [f]..[/f]: fett
- [k]..[/k]: kursiv
- [u]..[/u]: unterstrichen
Hinweis: Formatierungszeichen in Name und E-Mail-Adresse werden nicht akzeptiert.
|