PDO Pseudodatenbankschnittstelle

PDO Pseudodatenbankschnittstelle

am 07.05.2007 16:54:47 von Stefan Kuhn

Hallo,

gibt es schon ein Modul für PDO, mit dem man Daten quasi nach /dev/null
speichern kann?

Ich frage deshalb, weil ich ein Verwaltungssystem schreiben möchte, dass je
nach Konfiguration eventuell nicht speichern soll oder aber eine Verbindung
mit einer der unterstützten DB aufbauen soll.

Damit ich nicht jedesmal prüfen muss, ob gespeichert werden soll oder nicht
wäre es schön, wenn ich quasi eine Pseudodatenbank ansprechen könnte damit
mir das PDO Objekt weiterhin zur Verfügung steht, aber immer true zurück
gibt.

Habe mit PDO noch nicht gearbeitet. Ist es evtl. auch gar nicht nötiges so
zu machen?
Was ich mir auch noch vorstellen könnte, wäre ein einlesen der Daten aus
einer Textdatei oder ähnlichem zu Test-und Entwicklungszwecken (ähnlich
Unittests).

Viele Grüsse
Stefan

Re: PDO Pseudodatenbankschnittstelle

am 08.05.2007 03:10:28 von Martin Thielecke

Hallo Stefan,

Stefan Kuhn schrieb:
> gibt es schon ein Modul für PDO, mit dem man Daten quasi nach /dev/null
> speichern kann?

> Habe mit PDO noch nicht gearbeitet. Ist es evtl. auch gar nicht nötiges so
> zu machen?
> Was ich mir auch noch vorstellen könnte, wäre ein einlesen der Daten aus
> einer Textdatei oder ähnlichem zu Test-und Entwicklungszwecken (ähnlich
> Unittests).

Hmm, seh ich das falsch, oder koenntest du fuer diesen Zweck einfach mit
PDO-Sqlite eine Datenbank nach /dev/null anlegen? Ich habs jetzt nicht
getestet, aber waere doch eine Ueberlegung wert, oder?

Viele Gruesse

Martin

Re: PDO Pseudodatenbankschnittstelle

am 08.05.2007 21:48:09 von Hadanite Marasek

> Damit ich nicht jedesmal prüfen muss, ob gespeichert werden soll oder nicht
> wäre es schön, wenn ich quasi eine Pseudodatenbank ansprechen könnte damit
> mir das PDO Objekt weiterhin zur Verfügung steht, aber immer true zurück
> gibt.
>
> Habe mit PDO noch nicht gearbeitet. Ist es evtl. auch gar nicht nötiges so
> zu machen?
> Was ich mir auch noch vorstellen könnte, wäre ein einlesen der Daten aus
> einer Textdatei oder ähnlichem zu Test-und Entwicklungszwecken (ähnlich
> Unittests).

Mach doch einfach class SilentPDO extends PDO und überlade dann alle/die
relevanten Funktionen von PDO so, dass sie das gewünschte Verhalten zeigen.
--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php

Re: PDO Pseudodatenbankschnittstelle

am 14.05.2007 04:19:34 von oliver.graetz

Stefan Kuhn schrieb:
> gibt es schon ein Modul für PDO, mit dem man Daten quasi nach /dev/nu=
ll
> speichern kann?
>=20
> Ich frage deshalb, weil ich ein Verwaltungssystem schreiben möchte, d=
ass je
> nach Konfiguration eventuell nicht speichern soll
>=20
> Damit ich nicht jedesmal prüfen muss, ob gespeichert werden soll oder=
nicht
> wäre es schön, wenn ich quasi eine Pseudodatenbank ansprechen kön=
nte damit
> mir das PDO Objekt weiterhin zur Verfügung steht, aber immer true zur=
ück
> gibt.

Das "jedesmal prüfen muss" kapiere ich nicht ganz. Das "jedesmal" sagt
nicht, dass das Prüfen falsch ist, sondern nur, dass der Code nicht gut=

organisiert ist. Wenn etwas oft passiert, dann gehört es weggekapselt,
damit eben auf der Nutzerseite _kein_ Aufwand mehr entsteht.

Im vorliegenden Fall könntest du eine eigene DB-Verbindungsklasse
schreiben, die nur dann tatsächlich was macht, wenn sie beim
Instanzieren auch ein PDO-Objekt übergeben bekommen hat. Die benutzt du=

dann, anstatt direkt mit PDO zu arbeiten. Um sie wie PDO nutzen zu
können, wiederholst du dann das Interface von PDO (Decorator). So eine
Klasse ist in in PHP unter 20 Zeilen lang. Oft benötigten Kram kannst d=
u
dann auch gleich da rein schreiben.

Erben von PDO ist hier nicht nötig (man sollte nur dann erben, wenn man=

es tatsächlich mit einer generell-speziell Beziehung zu tun hat und das=

ist hier nicht der Fall) und würde "nicht wirklich" funktionieren, denn=

ein funktionierendes PDO-Objekt setzt voraus, dass im Konstruktor eine
Verbindung zustande kommt. Wenn du den Fehler einfach abfängst und
ignorierst, dann darfst du dich nicht wundern, wenn's irgendwann richtig
Probleme gibt.

Alternativ: Nimm doch eine In-Memory-SQLite-Datenbank. Die ist beim
Request-Ende sofort wieder weg und du kannst während des Requests
tatsächlich damit arbeiten.

> Habe mit PDO noch nicht gearbeitet. Ist es evtl. auch gar nicht nötig=
es so
> zu machen?=20
> Was ich mir auch noch vorstellen könnte, wäre ein einlesen der Date=
n aus
> einer Textdatei oder ähnlichem zu Test-und Entwicklungszwecken (ähn=
lich
> Unittests).

Textdatei kannst du machen, aber warum solltest du? SQLite ist da viel
praktischer, weil die Daten wie bei einer Textdatei in einer einzelnen
Datei stehen und du dennoch mit der Power von SQL damit arbeiten kannst.
So kannst du zum Beispiel damit dann viel besser manuell Anfragen testen
und dann in den Code einbauen.

OLLi

--=20
6: "Dr. Amrak gave the disc to me before he died."
B: "What? As opposed to after he died?"
[Battlestar Galactica 107]