PHP Handbuch
Zurück |  | Weiter

# unserialize

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

unserialize -- Erzeugt aus einem gespeicherten Datenformat einen Wert in PHP

## Beschreibung

mixed unserialize ( string str )

unserialize() nimmt eine einzelne Variable aus einer serialisierten Datenmenge (siehe serialize()) und wandelt sie in einen PHP-Wert zurück. Der konvertierte Wert wird zurück gegeben und kann vom Typ integer, float, string, array oder object sein. Falls der übergebene Sting nicht deserialisierbar ist, wird `FALSE` zurück gegeben und `E_NOTICE` produziert.

Warnung
`FALSE` wird sowohl im Fehlerfall als auch bei einem serialisierten `FALSE`-Wert zurück gegeben. Es ist möglich, diesen speziellen Fall abzufangen, indem man `str` mit `serialize(false)` vergleicht oder prüft, ob ein `E_NOTICE` produziert wurde.

> unserialize_callback_func-Direktive: Es ist möglich, eine Callback-Funktion anzugeben, die aufgerufen wird, wenn eine undefinierte Klasse während des Deserialisierens instanziiert werden soll (um dem Erhalt des unvollständigen object "__PHP_Incomplete_Class" vorzubeugen). Nutzen Sie Ihre `php.ini`, ini_set() oder `.htaccess`, um 'unserialize_callback_func' festzulegen. Jedesmal, wenn eine undefinierte Klasse instanziiert werden soll, wird diese Funktion aufgerufen. Um dieses Feature abzuschalten, muss die Einstellung nur ungefüllt sein. Beachten Sie zudem, dass die Direktive unserialize_callback_func erst ab PHP 4.2.0 zur Verfügung steht.

Wenn die zu deserialisierende Variable ein Objekt ist, wird PHP nach der erfolgreichen Wiederherstellung des Objekts automatisch versuchen, die __wakeup()()-Methode aufzurufen (sofern diese existiert).

Beispiel 1. unserialize_callback_func-Beispiel

`<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
// unserialize_callback_func Direktive ist ab PHP 4.2.0 verfuegbar
ini_set('unserialize_callback_func', 'mycallback'); // Festlegen der callback_function
function mycallback($classname)
{
// einfach ein File einbinden, dass die Klassendefinitionen enthaelt
// Sie erhalten $classname, womit Sie herausfinden koennen, welche
// Klassendefinition benoetigt wird
}
?>`

> Anmerkung: In PHP 3 werden Methoden nicht erhalten, wenn ein serialisiertes Objekt deserialisiert wird. Diese Beschränkung wurde in PHP 4 aufgehoben, so dass Eigenschaften und Methoden wiederhergestellt werden können. Bitte lesen Sie den Abschnitt Objekte serialisieren des Kapitels Klassen und Objekte für weitere Informationen.

Beispiel 2. unserialize()-Beispiel

`<?php
// Als Beispiel benutzen wir unserialize(), um Daten aus einer Datenbank in das
// $session_data-Array zu laden. Das Beispiel vervollständigt das unter
// serialize() beschriebene.
$conn = odbc_connect("webdb", "php", "moorhuhn");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array ($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
// wenn execute oder fetch fehlschlägt, initialisiere ein leeres Array
$session_data = array();
} else {
// die serialisierten Daten sollten nun in $tmp[0] stehen.
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// etwas ging schief, also wieder ein leeres Array initialisieren
$session_data = array();
}
}
?>`

Siehe auch serialize().

Zurück | Zum Anfang | Weiter
strval | Nach oben | unset