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 | ||