Zugriff auf DB-Objekt

Zugriff auf DB-Objekt

am 31.07.2006 01:30:32 von Kay-Michael Voit

Hallo,
wie handhabt man das am Saubersten? Eine Zeitlang habe ich das Objekt
quick&dirty in eine Session gepackt, als bequeme globale Variable.

Derzeit scheint es mir am Sinnvollsten, einen Singletonmechanismus zu
implementieren, z.B., in dem man (wenn man das denn benutzen will), eine
eigene Klasse von Pear:DB ableitet und um eben diesen Mechnismus ergänzt.
Was gibt es noch für Möglichkeiten?

Gruß,
Kay-Michael Voit

Re: Zugriff auf DB-Objekt

am 31.07.2006 01:47:30 von Frank Schenk

Kay-Michael Voit schrieb:
> Hallo,
> wie handhabt man das am Saubersten? Eine Zeitlang habe ich das Objekt
> quick&dirty in eine Session gepackt, als bequeme globale Variable.
>
> Derzeit scheint es mir am Sinnvollsten, einen Singletonmechanismus zu
> implementieren, z.B., in dem man (wenn man das denn benutzen will), eine
> eigene Klasse von Pear:DB ableitet und um eben diesen Mechnismus ergänzt.
> Was gibt es noch für Möglichkeiten?

Singleton wenn die Verbindung vielen Applikationen zur Verfügung stehen
soll (also eingebundenen Klassen+Funktionen), wenn es nur wenige sind
würd ich ein Factory Pattern nehmen.

Ich hab da eine Factory Klasse gebastelt die ADODB verwendet, Objekte
Cached zwecks wiederverwendung und alle Konfigurationen in einer eigenen
MySQL Table hält. Ist aber noch nicht marktreif.

Sprich:

require_once("/var/www/classes/dbfactory/db_factory.class");
$db = db_factory_class::get_db('applicationdb1');

$db2 = db_factory_class::get_db('applicationdb1');
// db2 ist eine referenz auf das gleiche DB Objekt wie $db

$db3 = db_factory_class::get_db('applicationdb1', true);
// $db3 ist ein neues Objekt

$db4 = db_factory_class::get_db('applicationdb2', true);
// $db4 ist ein neues DB Objekt

Dafür gibts sogar ein schickes Administrationstool mit Ajax *g*

Braucht AdoDB, ne MySQL Datenbank, beherrscht zur Zeit MySQL+Postgres,
andere hab ich mangels Testmöglichkeit noch nicht eingebaut, ist aber ne
Sache von Minuten, alles was AdoDB unterstützt funktioniert damit. Läuft
nur unter PHP5 *alte Zöpfe abschneid*. PDO Unterstützung geplant.

Aber wie gesagt, noch nicht marktreif, wird nur auf unseren Seiten und
auf den Seiten einiger Kunden eingesetzt. *g*

Ich hoffe, ich konnte dir ein paar Ideen liefern :)


gruß, Frank