TigerZF
🌐Español

Capítulo 62. Zend_Serializer

62.1. Introducción

Zend_Serializer proporciona una interfaz basada en adaptadores para generar de forma sencilla una representación almacenable de tipos de PHP mediante distintos mecanismos, y recuperarla.

Ejemplo 62.1. Uso de la interfaz dinámica de Zend_Serializer

Para instanciar un serializador debe usar el método de fábrica con el nombre del adaptador:

$serializer = Zend_Serializer::factory('PhpSerialize');
// Now $serializer is an instance of Zend_Serializer_Adapter_AdapterInterface,
// specifically Zend_Serializer_Adapter_PhpSerialize

try {
    $serialized = $serializer->serialize($data);
    // now $serialized is a string

    $unserialized = $serializer->unserialize($serialized);
    // now $data == $unserialized
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}

El método serialize() genera una cadena almacenable. Para regenerar estos datos serializados basta con llamar al método unserialize().

Cada vez que se encuentre un error al serializar o deserializar, Zend_Serializer lanzará una Zend_Serializer_Exception.

Para configurar un adaptador de serialización dado, opcionalmente puede añadir un array o una instancia de Zend_Config al método factory() o a los métodos serialize() y unserialize():

$serializer = Zend_Serializer::factory('Wddx', array(
    'comment' => 'serialized by Zend_Serializer',
));

try {
    $serialized = $serializer->serialize(
        $data,
        array('comment' => 'change comment')
    );

    $unserialized = $serializer->unserialize(
        $serialized,
        array(/* options for unserialize */)
    );
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}

Las opciones pasadas a factory() son válidas para el objeto instanciado. Puede cambiar estas opciones usando el método setOption(s). Para cambiar una o más opciones solo para una llamada concreta, páselas como segundo argumento al método serialize() o unserialize().

Ejemplo 62.2. Uso de la interfaz estática de Zend_Serializer

Puede registrar un adaptador de serialización específico como adaptador de serialización predeterminado para usar con Zend_Serializer. Por defecto se registrará el adaptador PhpSerialize, pero puede cambiar esta opción usando el método estático setDefaultAdapter().

Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
// or
$serializer = Zend_Serializer::factory('PhpSerialize', $options);
Zend_Serializer::setDefaultAdapter($serializer);

try {
    $serialized   = Zend_Serializer::serialize($data, $options);
    $unserialized = Zend_Serializer::unserialize($serialized, $options);
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}