Forum und email

unserialize

(PHP 4, PHP 5)

unserialize — Maakt een PHP waarde van een opgeslagen representatie

Beschrijving

mixed unserialize ( string $str [, string $callback ] )

unserialize() neemt een enkele geserializeerde variabele (zie serialize()) en converteert het terug naar een PHP waarde. De geconverteerde waarde wordt teruggeven, en kan een integer, float, string, array of een object zijn. Als de meegegeven string niet correct worden ingelezen, zal deze functie FALSE teruggeven.

Note: Het is mogelijk een callback-functie in te stellen die zal worden aangeroepen als een ongedefinieerde class wordt opgeroepen tijdens het unserializen (om te voorkomen dat je een incompleet object "__PHP_Incomplete_Class" krijgt.) Gebruik je php.ini, ini_set() of .htaccess-bestand of 'unserialize_callback_func' in te stellen. Elke keer een ongedefinieerde class zou worden opgeroepen, wordt die functie aangeroepen. Om deze optie uit te zetten, moet je deze instelling gewoon leeg laten. Merk op dat de ini-instelling unserialize_callback_function nieuw is sinds PHP 4.2.0.

Als de variable die wordt geunserialized een object is, zal PHP automatisch proberen de __wakeup() functie van die class aan te roepen als deze functie beschikbaar is en het object succesvol kon worden gereconstrueerd.

Example#1 unserialize_callback_func voorbeeld

<?php
$serialized_object
='O:1:"a":1:{s:5:"value";s:3:"100";}';
// unserialize_callback_func is beschikbaar sinds PHP 4.2.0
ini_set('unserialize_callback_func','mycallback'); // stel je callback_function in
function mycallback($classname) {
    
// include hier een bestand dat de classdefinitie bevat
    // je krijgt $classname om uit te zoeken welke definitie je nodig hebt
}
?>

Note: In PHP 3, zullen properties van objecten worden geserializeerd, maar methods zullen verloren gaan. PHP 4 kent die limitatie niet, en zal zowel de properties als de methods herstellen. Zie de Serializing Objects sectie van Classes and Objects voor meer informatie.

Example#2 unserialize() example

<?php
// Hier gebruiken we unserialize() om de sessie data in de 
// $session_data array te laden van de string die we uit een database
// halen. Dit voorbeeld maakt het voorbeeld bij serialize() af.

$conn odbc_connect ("webdb""php""chicken");
$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)) {
    
// if the execute or fetch fails, initialize to empty array
    
$session_data = array();
} else {
    
// we should now have the serialized data in $tmp[0].
    
$session_data unserialize ($tmp[0]);
    if (!
is_array ($session_data)) {
        
// something went wrong, initialize to empty array
        
$session_data = array();
    }
}
?>

Zie ook: serialize().