unserialize

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

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. Nel caso in cui la stringa passata non sia deserializzabile la funzione restituisce FALSE.

Direttiva unserialize_callback_func: 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. Verrà utilizzata questa funzione ogni volta che occorre istanziare una classe indefinita. Per disabilitare questa opzione, lasciare vuota questa impostazione. Attenzione che la direttiva unserialize_callback_func è disponibile dalla versione 4.2.0 di PHP.

Se la variabile da ripristinare è un oggetto, dopo avere ricostruito l'oggetto, il PHP cercherà di eseguire la funzione membro __wakeup() (se esiste).

Esempio 1. Esempio di unserialize_callback_func.

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

// direttiva unserialize_callback_func disponibile dalla versione 4.2.0
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()

<?php
// 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().