Zend_Serializer-Introduction.xml 4.1 KB

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