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 boolean, 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 y un error de tipo E_NOTICE es generado.

Aviso

FALSE es devuelto tanto en el caso de un error como cuando se convierte el valor seriado FALSE. Este caso especial puede detectarse comparando cadena con serialize(false) o atrapando el error E_NOTICE generado.

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

Hosting by: hurra.com
Generated: 2007-01-26 18:01:08