Zend_Serializer
bietet ein Adapter-basierendes Interface um
eine speicherbare Repräsentation von PHP Typen durch unterschiedliche
Arten zu bieten und diese wiederherzustellen.
Beispiel 673. Verwenden des dynamischen Interfaces von Zend_Serializer
Um einen Serializer zu instanzieren sollte man die Factory Methode mit dem Namen des Adapters verwenden:
$serializer = Zend_Serializer::factory('PhpSerialize'); // Jetzt ist $serializer eine Instanz von // Zend_Serializer_Adapter_AdapterInterface, im speziellen // Zend_Serializer_Adapter_PhpSerialize try { $serialized = $serializer->serialize($data); // jetzt ist $serialized ein String $unserialized = $serializer->unserialize($serialized); // Jetzt ist $data == $unserialized } catch (Zend_Serializer_Exception $e) { echo $e; }
Die Methode serialize()
erzeugt einen speicherbaren String. Um
diese serialisierten Daten wiederherzustellen kann einfach die Methode
unserialize()
aufgerufen werden.
Jedesmal wenn ein Fehler bei der Serialisierung oder Deserialisierung festgestellt wird
wirft Zend_Serializer
eine
Zend_Serializer_Exception
.
Um einen gegebenen Serialisierungs-Adapter zu konfigurieren kann optional ein Array oder
eine Instanz von Zend_Config
an die
factory()
oder die Methoden serialize()
und unserialize()
übergeben werden:
$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(/* Optionen für die Deserialisierung */) ); } catch (Zend_Serializer_Exception $e) { echo $e; }
Optionen welche an factory()
übergeben werden sind für das
instanzierte Objekt gültig. Man kann diese Optionen verändern indem die
setOption(s)
Methoden verwendet werden. Um ein oder mehrere
Optionen für einen einzelnen Aufruf zu verändern, können diese als zweites Argument
an die Methoden serialize()
oder
unserialize()
übergeben werden.
Beispiel 674. Das statische Interface von Zend_Serializer verwenden
Man kann einen spezifischen Serialisierungs-Adapter als standardmäßigen
Serialisierungs-Adapter für die Verwendung mit Zend_Serializer
registrieren. Standardmäßig wird der Adapter PhpSerialize
registriert. Aber man kann das verändern indem die statische Methode
setDefaultAdapter()
verwendet wird.
Zend_Serializer::setDefaultAdapter('PhpSerialize', $options); // oder $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; }