serialize

(PHP 3 >= 3.0.5, PHP 4, PHP 5)

serialize --  Erzeugt eine speicherbare Repräsentation eines Wertes

Beschreibung

string serialize ( mixed value )

serialize() gibt einen String zurück, der eine Byte-Stream-Repräsentation von value enthält, die beliebig gespeichert werden kann.

Diese Funktion dient der Speicherung oder Übergabe von PHP-Werten, ohne dass diese ihren Typ oder ihre Struktur verlieren.

Um eine serialisierte Zeichenkette wieder als PHP-Wert verfügbar zu machen, verwenden Sieunserialize(). serialize() kann mit allen Typen umgehen, ausgenommen mit dem resource-Typ. Sie können sogar Arrays serialisieren, die Referenzen auf sich selbst enthalten. Zirkelbezüge innerhalb des Arrays/Objekts, das Sie serialisieren, werden ebenfalls gespeichert. Alle anderen Referenzen gehen verloren.

Wenn Objekte serialisiert werden, versucht PHP die Methode __sleep() vor der Serialisierung aufzurufen. Dies erlaubt einem Objekt letzte "Aufräumaktionen", bevor es serialisiert wird. Ebenso wird die Methode __wakeup() aufgerufen, wenn das Objekt mittels unserialize() wiederhergestellt wird.

Anmerkung: Dies funktioniert nicht korrekt bis PHP 4.0.7.

Anmerkung: In PHP 3 werden Objekteigenschaften serialisiert, aber die Methoden gehen verloren. Diese Beschränkung wurde in PHP 4 aufgehoben, so dass sowohl Eigenschaften als auch Methoden wiederhergestellt werden können. Bitte lesen Sie den Abschnitt Objekte serialisieren des Kapitels Klassen und Objekte für weitere Informationen.

Es ist nicht möglich PHP-interne Objekte zu serialisieren.

Beispiel 1. serialize()-Beispiel

<?php
// $session_data enthält ein mehrdimensionales Array mit Session-Informationen
// des aktuellen Benutzers. Wir benutzen serialize() um diese Infos am Ende
// der Anfrage in eine Datenbank zu speichern.

$conn = odbc_connect("webdb", "php", "moorhuhn");
$stmt = odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!
odbc_execute($stmt, &$sqldata)) {
    
$stmt = odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmt, &$sqldata)) {
        
/* Irgendwas ging schief ... */
    
}
}
?>

Siehe auch unserialize().