unserialize() toma una variable sencilla seriada
(vea serialize()) y la convierte de vuelta a su
valor PHP_ El valor convertido es retornado, y puede ser
un integer, float, string,
array u object_ En caso de que la cadena
pasada no pueda ser procesada para revertir la seriación, se
devuelve FALSE_
Directiva unserialize_callback_func:
Es posible establecer una función_llamada de retorno la cual
será llamada si una clase no definida debería ser
instanciada durante el proceso de revertir la seriación_ (para
prevenir que se reciba un object incompleto
"__PHP_Incomplete_Class"_) Use su
php_ini, ini_set() o _htaccess para definir
'unserialize_callback_func'_ Cada vez que una clase no definida deba
ser instanciada, ésta función será llamada_ Para
deshabilitar esta característica simplemente asigne un valor
vacío a este parámetro_ También note que la
directiva unserialize_callback_func se hizo disponible en PHP 4_2_0_
Nota:
El parámetro llamada_de_retorno fue
agregado en PHP 4_2_0
Si la variable que está siendo convertida de vuelta es un
objeto, PHP intentará llamar la función
miembro __wakeup() (si existe)
automáticamente luego de haber recontruido satisfactoriamente
el objeto_
Ejemplo 1_ Ejemplo de unserialize_callback_func
<?php
$objeto_seriado='O:1:"a":1:{s:5:"valor";s:3:"100";}';
// la directiva unserialize_callback_func esta disponible a partir de PHP 4_2_0
ini_set('unserialize_callback_func','mi_llamada_de_retorno'); // defina su callback_function
function mi_llamada_de_retorno($nombre_clase) {
// tan solo incluya un archivo que contenga su definicion de clase
// usted recibe $nombre_clase para determinar que definicion de
// clase requiere
}
?>
Nota:
En PHP 3, los métodos no se preservan cuando se revierte un
objeto seriado_ PHP 4 elimina esta limitación y recupera tanto
propiedades como métodos_ Por favor consulte la
sección Seriación de
Objetos de Clases y Objetos
para más información_
Ejemplo 2_ Ejemplo de unserialize()
<?php
// Aqui usamos unserialize() para cargar los datos de sesion
// provenientes de la cadena seleccionada desde la base de datos en la
// matriz $datos_sesion_ Este ejemplo complementa aquel descrito con
// serialize()_
$con = odbc_connect ("bd_web", "php", "gallina");
$sent = odbc_prepare ($con, "SELECT datos FROM sesiones WHERE id = ?");
$datos_sql = array ($PHP_AUTH_USER);
if (!odbc_execute ($sent, &$datos_sql) || !odbc_fetch_into ($sent, &$tmp)) {
// si la ejecucion del comando o la recuperacion de datos falla,
// inicializar una matriz vacia
$datos_sesion = array();
} else {
// ahora deberiamos tener los datos seriados en $tmp[0]_
$datos_sesion = unserialize ($tmp[0]);
if (!is_array ($datos_sesion)) {
// algo ha fallado, inicializar una matriz vacia
$datos_sesion = array();
}
}
?>