dclp FAQ

FAQ der Newsgroups de.comp.lang.php.*

 
  • Increase font size
  • Default font size
  • Decrease font size

Sessions

Wie speichere ich Objekte in Sessions?

E-MailDruckenPDFLesezeichen anlegen: Du musst dich einloggen um ein Lesezeichen für diesen Beitrag anzulegen. Es wird deiner persönlichen Lesezeichenliste hinzugefügt.

Man 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
	[...]
}
}
Wie speichere ich Objekte in Sessions?
http://www.php-faq.de/q-sessions-objekte.html
 

dclp FAQ


Login