unserialize

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

unserialize --  Crea un valor PHP a partir de una representación almacenada

Descripción

mixed unserialize ( string cadena )

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.

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. Esa limitación fue retirada en PHP 4 ya que tanto las propiedades como los métodos se almacenan ahora. 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();
    }
}
?>

Vea también serialize().