unserialize

(PHP 3>= 3.0.5, PHP 4 )

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

Descripción

mixed unserialize ( string cadena [, string llamada_de_retorno])

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();
    }
}
?>

Vea también serialize().