Forum und email

unserialize

(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 boolean, integer, float, string, array oppure object. Nel caso in cui la stringa passata non sia deserializzabile la funzione restituisce FALSE e genera un E_NOTICE.

Avviso

FALSE è restituito sia in caso di errore e sia in caso di de-serializzazione del valore FALSE. Questo caso particolare può essere intercettato confrontando str con serialize(false) o rilevando il E_NOTICE generato.

Nota: 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).

Example#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

Example#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().