29.13. Wie speichere ich Objekte in Sessions?Antwort von Clemens KoppensteinerMan kann Objekte genau wie alle anderen Typen in Sessions speichern indem man sie in den $_SESSION-Array speichert. Zu beachten ist dabei allerdings, dass auf jeder Seite, in der auf die Session zugegriffen wird (in der also session_start() aufgerufen wird), auch die Klassendefinition eingebunden sein muss. Falls sich diese in einer seperaten Datei befindet, muss sie vor session_start() inkludiert werden. Wenn keine Klassendefinition vorhanden ist, stellt PHP die Klassenfunktionen nicht wieder her - die Klasse ist somit meistens nutzlos. Oft muss man ein Objekt aufräumen, bevor es am Ende des Skriptes gespeichert (serialisiert) wird. Dazu dient dient die "magische" Funktion __sleep() . Diese wird vor dem Serialisieren des Objekts von PHP aufgerufen. Sie muss einen Array mit allen Variablen des Objektes zurückgegben, die gespeichert werden sollen. Ihr Gegenstück ist die Funktion __wakeup() . Sie wird beim Wiederherstellen des Objektes aufgerufen. class myClass { var $id; var $text; var $db; function getText() { return $this->text; } function setText($text) { $this->text = $text; // schreibe Text in die Datenbank [...] } function __sleep() { // schließe die Datenbankverbindung $this->db->disconnect(); return array('id', 'text'); } function __wakeup() { // stelle die Datenbankverbindung wieder her $this->db = new DB([...]); // hole den Text aus der Datenbank [...] } } |
||
29.13. Wie speichere ich Objekte in Sessions? http://www.php-faq.de/q/q-sessions-objekte.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |