Jens Schärer: Zugriff auf statische Variable nicht möglich?!

Hallo,

ich habe folgenden Codeschnippsel:

//Query-Cache
protected static $queryCache = array();

[...]

protected function cacheQuery($query, $fetchmode)
  {
    $key = md5($query . $fetchmode);

if(!array_key_exists($key, Dao::$queryCache))
    {
      Dao::$queryCache[$key] = new RecordSet($this->dbObj->Execute($query));
    }

return Dao::$queryCache[$key];
  }

[...]

Folgendes soll passieren: Ich prüfe ab, ob die Query mit dem MD5-Hash bereits existiert und gebe entsprechend den entweder zuvor angelegten Datensatz zurück oder den neu angelegten.

Wenn ein neuer Datensatz angelegt wird und dann das Element zurückgegeben wird, funktioniert es. Soll aber ein Datensatz aus dem Cache geliefert werden, läuft es schief, die Daten kommen scheinbar nicht dort an wo sie hinsollen, sind aber im Cache vorhanden!

Wo liegt da mein Denkfehler?

Gruß,
Jens

  1. echo $begrüßung;

    Wo liegt da mein Denkfehler?

    Noch weiß ich das nicht. Ich kann das Problem nicht nachvollziehen. Dein Codeausschnitt verschweigt auch einige Dinge:

    • Du verwendest die Klasse Dao. Ist das die, zu der die Codestücken gehören?
    • Was liefert die verwendete Funktion zurück? Klappt new RecordSet?

    Steht das error_reporting auf E_ALL? Hast du mal alle beteiligten (oder zumindest strategisch wichtige) Zwischenergebnisse mit var_dump() ausgegeben?

    Versuche das Problem in einem kleinstmöglichen Script nachzustellen. Das ist dann auch für Außenstehende besser nachzuvollziehen.

    echo "$verabschiedung $name";