Tabla de contenidos
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;
}