Zend_Serializer-Introduction.xml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.serializer.introduction">
  5. <title>Einführung</title>
  6. <para>
  7. <classname>Zend_Serializer</classname> bietet ein Adapter-basierendes Interface um
  8. eine speicherbare Repräsentation von <acronym>PHP</acronym> Typen durch unterschiedliche
  9. Arten zu bieten und diese wiederherzustellen.
  10. </para>
  11. <example id="zend.serializer.introduction.example.dynamic">
  12. <title>Verwenden des dynamischen Interfaces von Zend_Serializer</title>
  13. <para>
  14. Um einen Serializer zu instanzieren sollte man die Factory Methode mit dem Namen des
  15. Adapters verwenden:
  16. </para>
  17. <programlisting language="php"><![CDATA[
  18. $serializer = Zend_Serializer::factory('PhpSerialize');
  19. // Jetzt ist $serializer eine Instanz von
  20. // Zend_Serializer_Adapter_AdapterInterface, im speziellen
  21. // Zend_Serializer_Adapter_PhpSerialize
  22. try {
  23. $serialized = $serializer->serialize($data);
  24. // jetzt ist $serialized ein String
  25. $unserialized = $serializer->unserialize($serialized);
  26. // Jetzt ist $data == $unserialized
  27. } catch (Zend_Serializer_Exception $e) {
  28. echo $e;
  29. }
  30. ]]></programlisting>
  31. </example>
  32. <para>
  33. Die Methode <methodname>serialize()</methodname> erzeugt einen speicherbaren String. Um
  34. diese serialisierten Daten wiederherzustellen kann einfach die Methode
  35. <methodname>unserialize()</methodname> aufgerufen werden.
  36. </para>
  37. <para>
  38. Jedesmal wenn ein Fehler bei der Serialisierung oder Deserialisierung festgestellt wird
  39. wirft <classname>Zend_Serializer</classname> eine
  40. <classname>Zend_Serializer_Exception</classname>.
  41. </para>
  42. <para>
  43. Um einen gegebenen Serialisierungs-Adapter zu konfigurieren kann optional ein Array oder
  44. eine Instanz von <classname>Zend_Config</classname> an die
  45. <methodname>factory()</methodname> oder die Methoden <methodname>serialize()</methodname>
  46. und <methodname>unserialize()</methodname> übergeben werden:
  47. </para>
  48. <programlisting language="php"><![CDATA[
  49. $serializer = Zend_Serializer::factory('Wddx', array(
  50. 'comment' => 'serialized by Zend_Serializer',
  51. ));
  52. try {
  53. $serialized = $serializer->serialize(
  54. $data,
  55. array('comment' => 'change comment')
  56. );
  57. $unserialized = $serializer->unserialize(
  58. $serialized,
  59. array(/* Optionen für die Deserialisierung */)
  60. );
  61. } catch (Zend_Serializer_Exception $e) {
  62. echo $e;
  63. }
  64. ]]></programlisting>
  65. <para>
  66. Optionen welche an <methodname>factory()</methodname> übergeben werden sind für das
  67. instanzierte Objekt gültig. Man kann diese Optionen verändern indem die
  68. <methodname>setOption(s)</methodname> Methoden verwendet werden. Um ein oder mehrere
  69. Optionen für einen einzelnen Aufruf zu verändern, können diese als zweites Argument
  70. an die Methoden <methodname>serialize()</methodname> oder
  71. <methodname>unserialize()</methodname> übergeben werden.
  72. </para>
  73. <example id="zend.serializer.introduction.example.static.php">
  74. <title>Das statische Interface von Zend_Serializer verwenden</title>
  75. <para>
  76. Man kann einen spezifischen Serialisierungs-Adapter als standardmäßigen
  77. Serialisierungs-Adapter für die Verwendung mit <classname>Zend_Serializer</classname>
  78. registrieren. Standardmäßig wird der Adapter <classname>PhpSerialize</classname>
  79. registriert. Aber man kann das verändern indem die statische Methode
  80. <methodname>setDefaultAdapter()</methodname> verwendet wird.
  81. </para>
  82. <programlisting language="php"><![CDATA[
  83. Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
  84. // oder
  85. $serializer = Zend_Serializer::factory('PhpSerialize', $options);
  86. Zend_Serializer::setDefaultAdapter($serializer);
  87. try {
  88. $serialized = Zend_Serializer::serialize($data, $options);
  89. $unserialized = Zend_Serializer::unserialize($serialized, $options);
  90. } catch (Zend_Serializer_Exception $e) {
  91. echo $e;
  92. }
  93. ]]></programlisting>
  94. </example>
  95. </sect1>