Eigener DB "Mapper"

kerstel

Erfahrenes Mitglied
Hallo,

ich habe mir eine Klasse geschrieben, die mich mit Unterschiedlichen Datenbanken verbindet.

z.b.:

$db = new database("host","user","pass","database");

Nun möchte ich einfach auf die Daten zugreifen z.b. so:

PHP:
$db->Tabelle->Feld[Index]->value   // Inhalt von Tabelle, Feld mit Index
$db->Tabelle->Feld->value             // Array mit allen Inhalten der Tabelle von Feld
$db->Tabelle[Index]->value            // Kompletter Satz von Index
$db->Tabelle->value                      // Array mit allen Inhalten der Tabelle

wie kann ich sowas realisieren? Vor allem soll das Ding ne akzeptable Performance haben :-)

Danke und Gruß
Kerstel
 
So wie du es aufgeschrieben hast wird es wohl nicht möglich sein...

PHP:
$db->Tabelle->Feld[Index]->value   // Inhalt von Tabelle, Feld mit Index
$db->Tabelle->Feld->value             // Array mit allen Inhalten der Tabelle von Feld
$db->Tabelle[Index]->value            // Kompletter Satz von Index
$db->Tabelle->value                      // Array mit allen Inhalten der Tabelle

Du hast das object $db, welches lediglich eine Verbindung zur datenbank hat...
Seit PHP5 gibt es die funktionen
__get, __set, __call
welche dir etwas weiter helfen könnten...
z.b.
PHP:
$db->getUser(1);
public function __call($method, $argument){
   $table = str_replace("get", "", strtolower($method));
   $query = "select * from ".$table." where ".$argument."... = $argument...;
   $res = mysql_query($query, $link);
   ....

Ich würde dir aber empfehlen für jede Tabelle eine Klasse erstellen, welche funktionen wie findById, save, update, delete beinhalten und von deiner DB Klasse abgeleitet werden...

Schau dir einfach mal die umsetzung von zend, cakephp und symfony an....
 
Hi,

Danke für Deine Antwort, da aber das ganze dynamisch sein soll, macht es m.E. keinen Sinn für jede Tabelle eine Klasse zu schreiben.

Gruß
Kerstel
 
Zurück