dedlfix: Array in $_SESSION ablegen

Beitrag lesen

echo $begrüßung;

Session->flash = array();
Session->flash['xyz'] = 'Hallo';
Dann wird in der $_SESSION-Variable nur ein leeres Array gespeichert.

Nicht nur das, es wird auch noch eine Notice-Meldung ausgegeben, die dir dieses Verhalten bestätigt. Bitte schalte zum Entwickeln immer das error_reporting auf E_ALL. Wenn du dann nach der angezeigten Notice googlest, bekommst du ein paar Informationen zu diesem Thema.

Dieses Verhalten wurde mit Version 5.2 gändert, außerdem gab es da auch noch einen Bug.
Du musst __get() eine Referenz zurückgeben lassen, damit du den Wert direkt bekommst und nicht nur eine Kopie.

public function &__get($key) {
    return $_SESSION[$key];
  }

public function __set($key, $value) {
    $_SESSION[$key] = $value;
  }

Somit funktionierte es bei mir.

Mit $session->flash = array(); ruft PHP __set() auf.
Mit $session->flash['xyz'] = 'Hallo'; ruft PHP zunächst __get() auf, um $session->flash zu erhalten. Ohne Referenz schreibst du anschließend in die zurückgegebene Kopie, die dir gleich wieder verloren geht, weil nichts mehr auf sie verweist.

echo "$verabschiedung $name";