| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.serializer.introduction">
- <title>Einführung</title>
- <para>
- <classname>Zend_Serializer</classname> bietet ein Adapter-basierendes Interface um
- eine speicherbare Repräsentation von <acronym>PHP</acronym> Typen durch unterschiedliche
- Arten zu bieten und diese wiederherzustellen.
- </para>
- <example id="zend.serializer.introduction.example.dynamic">
- <title>Verwenden des dynamischen Interfaces von Zend_Serializer</title>
- <para>
- Um einen Serializer zu instanzieren sollte man die Factory Methode mit dem Namen des
- Adapters verwenden:
- </para>
- <programlisting language="php"><![CDATA[
- $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;
- }
- ]]></programlisting>
- </example>
- <para>
- Die Methode <methodname>serialize()</methodname> erzeugt einen speicherbaren String. Um
- diese serialisierten Daten wiederherzustellen kann einfach die Methode
- <methodname>unserialize()</methodname> aufgerufen werden.
- </para>
- <para>
- Jedesmal wenn ein Fehler bei der Serialisierung oder Deserialisierung festgestellt wird
- wirft <classname>Zend_Serializer</classname> eine
- <classname>Zend_Serializer_Exception</classname>.
- </para>
- <para>
- Um einen gegebenen Serialisierungs-Adapter zu konfigurieren kann optional ein Array oder
- eine Instanz von <classname>Zend_Config</classname> an die
- <methodname>factory()</methodname> oder die Methoden <methodname>serialize()</methodname>
- und <methodname>unserialize()</methodname> übergeben werden:
- </para>
- <programlisting language="php"><![CDATA[
- $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;
- }
- ]]></programlisting>
- <para>
- Optionen welche an <methodname>factory()</methodname> übergeben werden sind für das
- instanzierte Objekt gültig. Man kann diese Optionen verändern indem die
- <methodname>setOption(s)</methodname> 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 <methodname>serialize()</methodname> oder
- <methodname>unserialize()</methodname> übergeben werden.
- </para>
- <example id="zend.serializer.introduction.example.static.php">
- <title>Das statische Interface von Zend_Serializer verwenden</title>
- <para>
- Man kann einen spezifischen Serialisierungs-Adapter als standardmäßigen
- Serialisierungs-Adapter für die Verwendung mit <classname>Zend_Serializer</classname>
- registrieren. Standardmäßig wird der Adapter <classname>PhpSerialize</classname>
- registriert. Aber man kann das verändern indem die statische Methode
- <methodname>setDefaultAdapter()</methodname> verwendet wird.
- </para>
- <programlisting language="php"><![CDATA[
- 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;
- }
- ]]></programlisting>
- </example>
- </sect1>
|