1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
<?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>
|