 |
unserialize (PHP 3 >= 3.0.5, PHP 4, PHP 5) unserialize --
Crea un valore PHP a partire da una rappresentazione archiviata
Descrizionemixed 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.
Avvertimento |
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.
|
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().
|  |