Zend_Serializer

Introduction

Zend_Serializer provides an adapter based interface to simply generate storable representation of php types by different facilities, and recover.

Example #1 Using Zend_Serializer dynamic interface

To instantiate a serializer you should use the factory method with the name of the adapter:

  1. $serializer = Zend_Serializer::factory('PhpSerialize');
  2. // Now $serializer is an instance of Zend_Serializer_Adapter_AdapterInterface,
  3. // specifically Zend_Serializer_Adapter_PhpSerialize
  4.  
  5. try {
  6.     $serialized = $serializer->serialize($data);
  7.     // now $serialized is a string
  8.    
  9.     $unserialized = $serializer->unserialize($serialized);
  10.     // now $data == $unserialized
  11. } catch (Zend_Serializer_Exception $e) {
  12.     echo $e;
  13. }

The method serialize generates a storable string. To regenerate this serialized data you can simply call the method unserialize.

Any time an error is encountered serializing or unserializing, Zend_Serializer will throw a Zend_Serializer_Exception.

To configure a given serializer adapter, you can optionally add an array or an instance of Zend_Config to the factory or to the un-/serialize methods:

  1. $serializer = Zend_Serializer::factory('Wddx', array(
  2.     'comment' => 'serialized by Zend_Serializer',
  3. ));
  4.  
  5. try {
  6.     $serialized = $serializer->serialize($data, array('comment' => 'change comment'));
  7.     $unserialized = $serializer->unserialize($serialized, array(/* options for unserialize */));
  8. } catch (Zend_Serializer_Exception $e) {
  9.     echo $e;
  10. }

Options passed to the factory are valid for the instantiated object. You can change these options using the setOption(s) method. To change one or more options only for a single call, pass them as the second argument to either the serialize or unserialize method.

Using the Zend_Serializer static interface

You can register a specific serializer adapter as a default serialization adapter for use with Zend_Serializer. By default, the PhpSerialize adapter will be registered, but you can change this option using the setDefaultAdapter() static method.

  1. Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
  2. // or
  3. $serializer = Zend_Serializer::factory('PhpSerialize', $options);
  4. Zend_Serializer::setDefaultAdapter($serializer);
  5.  
  6. try {
  7.     $serialized   = Zend_Serializer::serialize($data, $options);
  8.     $unserialized = Zend_Serializer::unserialize($serialized, $options);
  9. } catch (Zend_Serializer_Exception $e) {
  10.     echo $e;
  11. }

Zend_Serializer