Heizer: DB Anfage cachen?

Liebes Forum

Es ist jetzt also zum ersten Mal soweit, daß ich OOP-PHP und Datenbank (MySQL) zusammen verwende, und ich hätte da eine Frage. Ich schreibe jetzt einfach, wie ich es mache, und vielleicht sagt mir ja jemand, ob ich richtig an die Sache rangehe:

Ich habe jetzt zu jeder Tabelle eine Klasse, die alle Funktionen, die mit dieser Tabelle möglich sind, bereitstellt. Ich habe mir nun gedacht, daß es ja Performace fressend sein dürfte, wenn ich jedes Mal einen benötigten Wert wieder aus der DB auslese, also sieht eine typische Abfrage Methode so aus:

function getName() {
  if (!$this->name) {
    $sql = "SELECT name FROM table WHERE ID=".$this->ID;
    $result = mysql_query($sql);
    $r = mysql_fetch_row($result);
    $this->name = $r[0];
  }
  return $this->name;
}

Macht "man" das so? Ich habe halt dann nicht nur viele Methoden, sondern auch viele Eigenschaften, die Klasse wird also um einiges Größer, als wenn das so mache. Oder gibt es da noch bessere Gednakengänge?

Ich schreibe das jetzt, weil ich es irgendwie für gut halte, aber mir nicht sicher bin. Freue mich über Tips und Tricks.

Grüße

Heizer

  1. echo $begrueszung;

    Es ist jetzt also zum ersten Mal soweit, daß ich OOP-PHP und Datenbank (MySQL) zusammen verwende, und ich hätte da eine Frage.

    Schau dir doch mal bei PEAR die Packages DB_Table und DB_DataObject an.

    Macht "man" das so? Ich habe halt dann nicht nur viele Methoden, sondern auch viele Eigenschaften, die Klasse wird also um einiges Größer, als wenn das so mache. Oder gibt es da noch bessere Gednakengänge?

    Jeder Datenbank-Zugriff ist teuer.
    Und in der Annahme, dass du aus dem Datensatz noch andere Felder brauchst: Es ist besser, statt jede Eigenschaft einzeln auszulesen, den gesamten Datensatz auf einmal zu lesen und die Eigenschaften zu setzen.

    echo "$verabschiedung {$user->getName()}";