unserialize

(PHP 3>= 3.0.5, PHP 4 )

unserialize --  Crea un valore PHP a partire da una rappresentazione archiviata

Descrizione

mixed unserialize ( string str)

La funzione unserialize() prende il formato serializzato di una variabile (vedere serialize()) e la riporta a valore PHP. La funzione restituisce il valore ottenuto, che può essere di tipo integer, float, string, array oppure object.

Nota: E' possibile impostare una funzione di callback che possa essere richiamata se, durante la fase di deserializzazione, occorre istanziare una classe indefinita. (per evitare di ottenere un tipo object incompleto "__PHP_Incomplete_Class".) Per definire il parametro 'unserialize_callback_func' si può agire sul php.ini, o usare ini_set() oppure con .htaccess-file Verrà utilizzata questa funzione ogni volta che occorre istanziare una classe indefinita. Per disabilitare questa opzione, lasciare vuoto questo settaggio.

Esempio 1. Esempio di unserialize_callback_func

$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';

ini_set('unserialize_callback_func','mycallback'); // imposta la funzione di callback

function mycallback($classname) {
    // semplicemente include un file contenente la definizione della classe
    // la variabile $classname indica di quale classe occorre la definizione
}

Nota: Nella versione 3 di PHP, i metodi non erano preservati durante la fase di deserializzazione di un oggetto. In PHP 4 questo limite è stato superato e possono essere recuperati sia metodi sia proprietà. Per maggiori informazioni vedere la sezione Serializzare oggetti in Classi e oggetti

Esempio 2. Esempio di uso di unserialize()

// In quest esempio si usa unserialize() per caricare i dati di una sessione da un database
// alla variabile $session_data. Questo esempio è complementare a quello illustrato
// nella funzione <function>serialize</function>.

$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)) {
    // se odbc_execute o odbc_fetch_into hanno un errore si predispone un array vuoto
    $session_data = array();
} else {
    // ora abbiamo i dati serializzati in $tmp[0].
    $session_data = unserialize ($tmp[0]);
    if (!is_array ($session_data)) {
       // qualcosa è andato storto, si predispone un array vuoto
       $session_data = array();
    }
}

Vedere anche: serialize().