dedlfix: PHP5 Klassenvariable

Beitrag lesen

echo $begrueszung;

jedesmal wenn ich ein Objekt von der Klasse DBM erstelle wird die Struktur unsinnigerweise neu ermittelt.

Das Stichwort lautet hier Singleton!

Ähmm, nein.

Ein Singleton ist eine Klasse, von der nur eine Instanz existieren kann:

Und deshalb ist singleton hier für den OP nicht die richtige Herangehensweise, denn er will ja mehrere Instanzen haben, und das ist durchaus sinnvoll.

Aber so wie du das mit der $instance und der singleton()-Methode machst, kann man das mit der DB-Struktur und der Methode, die die Struktur liefert, machen. Sprich:

class... {
  private static $DBStruct = null;

function getStruct() {
    if (is_null($DBStruct))
      $DBStruct = initialisierung...
    return $DBStruct;
  end;
}

An den OP:
Du willst die Struktur in $DBStruct als Array speichern. Arrays werden in PHP5 (immer noch) by Value (als Kopie) und nicht als Referenz zurückgegeben. Wenn du

function &getStruct() {

(beachte das &) nimmst, wird jetzt eine Referenz auf $DBStruct übergeben, das ist zwar schneller als ein Kopieren, hat aber den Nachteil, dass jeder der getStruct() aufrufen kann nun den Inhalt von $DBStruct verändern kann.

echo "$verabschiedung $name";