Zend_Serializer-Adapter.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.serializer.adapter">
  5. <title>Zend_Serializer_Adapter</title>
  6. <para>
  7. Les adaptateurs <classname>Zend_Serializer</classname> servent à changer les méthodes
  8. de sérialisation facilement.
  9. </para>
  10. <para>
  11. Chaque adaptateurs possède ses propres atouts et inconvénients. Dans certains cas, certains
  12. types PHP (objets) ne peuvent être représentés sous forme de chaines. Dans ce cas, ces types
  13. seront convertis vers un type sérialisable (par exemple, les objets seront convertis en tableaux).
  14. Ci ceci échoue, une exception <classname>Zend_Serializer_Exception</classname> sera alors envoyée.
  15. </para>
  16. <para>
  17. Voici une liste des adaptateurs disponibles.
  18. </para>
  19. <sect2 id="zend.serializer.adapter.phpserialize">
  20. <title>Zend_Serializer_Adapter_PhpSerialize</title>
  21. <para>
  22. Cet adaptateur utilise les fonctions PHP <methodname>un/serialize</methodname> et
  23. constitue un bon choix d'adaptateur par défaut.
  24. </para>
  25. <para>
  26. Aucune option de configuration n'existe pour cet adaptateur.
  27. </para>
  28. </sect2>
  29. <sect2 id="zend.serializer.adapter.igbinary">
  30. <title>Zend_Serializer_Adapter_Igbinary</title>
  31. <para>
  32. <ulink url="http://opensource.dynamoid.com">Igbinary</ulink> est un logiciel
  33. Open Source crée par Sulake Dynamoid Oy. C'est un remplaçant du sérialiseur utiliser
  34. par PHP. Au lieu d'utiliser une représentation textuelle (couteuse en temps et en poids),
  35. igbinary représente les structures de données PHP dans un format binaire compact.
  36. Les gains sont importants lorsqu'un système de stockage comme memcache est utilisé
  37. pour les données sérialisées.
  38. </para>
  39. <para>
  40. L'extension PHP igbinary est requise pour l'utilisation de cet adaptateur.
  41. </para>
  42. <para>
  43. Aucune option de configuration n'existe pour cet adaptateur.
  44. </para>
  45. </sect2>
  46. <sect2 id="zend.serializer.adapter.wddx">
  47. <title>Zend_Serializer_Adapter_Wddx</title>
  48. <para>
  49. <ulink url="http://wikipedia.org/wiki/WDDX">WDDX</ulink> (Web Distributed Data eXchange)
  50. est à la fois un langage de programmation, une plateforme et un mecanisme de transport
  51. de données entre différents environnements.
  52. </para>
  53. <para>
  54. Cet adaptateur utilise simplement les fonctions PHP
  55. <ulink url="http://php.net/manual/book.wddx.php">wddx_*()</ulink>. Veuillez lire
  56. le manuel PHP afin de vérifier la disponibilité et l'installation de ces fonctions.
  57. </para>
  58. <para>
  59. Aussi, l'extension PHP <ulink
  60. url="http://php.net/manual/book.simplexml.php">SimpleXML</ulink> est utilisée
  61. pour vérifier si une valeur <constant>NULL</constant> retournée par
  62. <methodname>wddx_unserialize()</methodname> est basée sur une donnée sérialisée
  63. <constant>NULL</constant> ou au contraire des données non valides
  64. </para>
  65. <para>
  66. Les options disponibles sont:
  67. </para>
  68. <table id="zend.serializer.adapter.wddx.table.options">
  69. <title>Options Zend_Serializer_Adapter_Wddx</title>
  70. <tgroup cols="4">
  71. <thead>
  72. <row>
  73. <entry>Option</entry>
  74. <entry>Type de donnée</entry>
  75. <entry>Valeur par défaut</entry>
  76. <entry>Description</entry>
  77. </row>
  78. </thead>
  79. <tbody>
  80. <row>
  81. <entry><emphasis>comment</emphasis></entry>
  82. <entry><type>chaine</type></entry>
  83. <entry></entry>
  84. <entry>
  85. Un commentaire qui apparait dans l'en-tête du paquet.
  86. </entry>
  87. </row>
  88. </tbody>
  89. </tgroup>
  90. </table>
  91. </sect2>
  92. <sect2 id="zend.serializer.adapter.json">
  93. <title>Zend_Serializer_Adapter_Json</title>
  94. <para>
  95. L'adaptateur <acronym>JSON</acronym> acréer un pont vers
  96. <classname>Zend_Json</classname> et/ou ext/json (l'extension json de PHP).
  97. Pour plus d'informations, lisez le manuel de <link
  98. linkend= "zend.json.introduction">Zend_Json</link>.
  99. </para>
  100. <para>
  101. Les options disponibles sont:
  102. </para>
  103. <table id="zend.serializer.adapter.json.table.options">
  104. <title>Options Zend_Serializer_Adapter_Json</title>
  105. <tgroup cols="4">
  106. <thead>
  107. <row>
  108. <entry>Option</entry>
  109. <entry>Type de donnée</entry>
  110. <entry>Valeur par défaut</entry>
  111. <entry>Description</entry>
  112. </row>
  113. </thead>
  114. <tbody>
  115. <row>
  116. <entry><emphasis>cycleCheck</emphasis></entry>
  117. <entry><type>booléen</type></entry>
  118. <entry>false</entry>
  119. <entry>
  120. Voyez
  121. <link linkend="zend.json.advanced.objects1">cette section</link>
  122. </entry>
  123. </row>
  124. <row>
  125. <entry><emphasis>objectDecodeType</emphasis></entry>
  126. <entry><type>Zend_Json::TYPE_*</type></entry>
  127. <entry>Zend_Json::TYPE_ARRAY</entry>
  128. <entry>
  129. Voyez
  130. <link linkend= "zend.json.advanced.objects1">this section</link>
  131. </entry>
  132. </row>
  133. <row>
  134. <entry><emphasis>enableJsonExprFinder</emphasis></entry>
  135. <entry><type>booléen</type></entry>
  136. <entry>false</entry>
  137. <entry>
  138. Voyez <xref linkend= "zend.json.advanced.expr"/>
  139. </entry>
  140. </row>
  141. </tbody>
  142. </tgroup>
  143. </table>
  144. </sect2>
  145. <sect2 id="zend.serializer.adapter.amf03">
  146. <title>Zend_Serializer_Adapter_Amf 0 et 3</title>
  147. <para>
  148. Les adaptateurs <acronym>AMF</acronym>, <classname>Zend_Serializer_Adapter_Amf0</classname>
  149. et <classname>Zend_Serializer_Adapter_Amf3</classname>, sont un pont vers le sérialiseur
  150. du composant <classname>Zend_Amf</classname>. Veuillez lire la documentation de <link
  151. linkend= "zend.amf.introduction">Zend_Amf documentation</link> pour plus
  152. d'informations.
  153. </para>
  154. <para>
  155. Aucune option de configuration n'existe pour cet adaptateur.
  156. </para>
  157. </sect2>
  158. <sect2 id="zend.serializer.adapter.pythonpickle">
  159. <title>Zend_Serializer_Adapter_PythonPickle</title>
  160. <para>
  161. Cet adaptateur convertit des types PHP vers une chaine <ulink
  162. url="http://docs.python.org/library/pickle.html">Python Pickle</ulink>
  163. Grâce à lui, vous pouvez lire en Python des données sérialisées de PHP et
  164. inversement.
  165. </para>
  166. <para>
  167. Les options disponibles sont:
  168. </para>
  169. <table id="zend.serializer.adapter.pythonpickle.table.options">
  170. <title>Options Zend_Serializer_Adapter_PythonPickle</title>
  171. <tgroup cols="4">
  172. <thead>
  173. <row>
  174. <entry>Option</entry>
  175. <entry>Type de donnée</entry>
  176. <entry>Valeur par défaut</entry>
  177. <entry>Description</entry>
  178. </row>
  179. </thead>
  180. <tbody>
  181. <row>
  182. <entry><emphasis>protocol</emphasis></entry>
  183. <entry><type>entier</type> (0 | 1 | 2 | 3)</entry>
  184. <entry>0</entry>
  185. <entry>
  186. La version du protocole Pickle pour <methodname>serialize</methodname>
  187. </entry>
  188. </row>
  189. </tbody>
  190. </tgroup>
  191. </table>
  192. <para>
  193. Le transtypage (PHP vers Python) se comporte comme suit:
  194. </para>
  195. <table id="zend.serializer.adapter.pythonpickle.table.php2python">
  196. <title>Le transtypage (PHP vers Python)</title>
  197. <tgroup cols="2">
  198. <thead>
  199. <row>
  200. <entry>Type PHP</entry>
  201. <entry>Type Python</entry>
  202. </row>
  203. </thead>
  204. <tbody>
  205. <row>
  206. <entry><type>NULL</type></entry>
  207. <entry><type>None</type></entry>
  208. </row>
  209. <row>
  210. <entry><type>booléen</type></entry>
  211. <entry><type>booléen</type></entry>
  212. </row>
  213. <row>
  214. <entry><type>entier</type></entry>
  215. <entry><type>entier</type></entry>
  216. </row>
  217. <row>
  218. <entry><type>flottant</type></entry>
  219. <entry><type>flottant</type></entry>
  220. </row>
  221. <row>
  222. <entry><type>chaine</type></entry>
  223. <entry><type>chaine</type></entry>
  224. </row>
  225. <row>
  226. <entry><type>tableau</type></entry>
  227. <entry><type>liste</type></entry>
  228. </row>
  229. <row>
  230. <entry><type>tableau associatif</type></entry>
  231. <entry><type>dictionnaire</type></entry>
  232. </row>
  233. <row>
  234. <entry><type>objet</type></entry>
  235. <entry><type>dictionnaire</type></entry>
  236. </row>
  237. </tbody>
  238. </tgroup>
  239. </table>
  240. <para>
  241. Le transtypage (Python vers PHP) se comporte comme suit:
  242. </para>
  243. <table id="zend.serializer.adapter.pythonpickle.table.python2php">
  244. <title>Transtypage (Python vers PHP):</title>
  245. <tgroup cols="2">
  246. <thead>
  247. <row>
  248. <entry>Type Python</entry>
  249. <entry>Type PHP</entry>
  250. </row>
  251. </thead>
  252. <tbody>
  253. <row>
  254. <entry><type>None</type></entry>
  255. <entry><type>NULL</type></entry>
  256. </row>
  257. <row>
  258. <entry><type>booléen</type></entry>
  259. <entry><type>booléen</type></entry>
  260. </row>
  261. <row>
  262. <entry><type>entier</type></entry>
  263. <entry><type>entier</type></entry>
  264. </row>
  265. <row>
  266. <entry><type>long</type></entry>
  267. <entry>
  268. <type>entier</type>
  269. | <type>flottant</type>
  270. | <type>chaine</type>
  271. | <classname>Zend_Serializer_Exception</classname>
  272. </entry>
  273. </row>
  274. <row>
  275. <entry><type>flottant</type></entry>
  276. <entry><type>flottant</type></entry>
  277. </row>
  278. <row>
  279. <entry><type>chaine</type></entry>
  280. <entry><type>chaine</type></entry>
  281. </row>
  282. <row>
  283. <entry><type>octets</type></entry>
  284. <entry><type>chaine</type></entry>
  285. </row>
  286. <row>
  287. <entry><type>chaine Unicode</type></entry>
  288. <entry><type>chaine UTF-8</type></entry>
  289. </row>
  290. <row>
  291. <entry><type>list</type></entry>
  292. <entry><type>tableau</type></entry>
  293. </row>
  294. <row>
  295. <entry><type>tuple</type></entry>
  296. <entry><type>tableau</type></entry>
  297. </row>
  298. <row>
  299. <entry><type>dictionnaire</type></entry>
  300. <entry><type>tableau associatif</type></entry>
  301. </row>
  302. <row>
  303. <entry>Tout autre type</entry>
  304. <entry><classname>Zend_Serializer_Exception</classname></entry>
  305. </row>
  306. </tbody>
  307. </tgroup>
  308. </table>
  309. </sect2>
  310. <sect2 id="zend.serializer.adapter.phpcode">
  311. <title>Zend_Serializer_Adapter_PhpCode</title>
  312. <para>
  313. Cet adaptateur génère une chaine représentant du code analysable par PHP via <ulink
  314. url="http://php.net/manual/function.var-export.php">var_export()</ulink>.A la
  315. désérialisation, les données seront exécutées par <ulink
  316. url="http://php.net/manual/function.eval.php">eval</ulink>.
  317. </para>
  318. <para>
  319. Aucune option de configuration n'existe pour cet adaptateur.
  320. </para>
  321. <warning>
  322. <title>Désérialiser des objets</title>
  323. <para>
  324. Les objets seront sérialisés en utilisant la méthode magique<ulink
  325. url="http://php.net/manual/language.oop5.magic.php#language.oop5.magic.set-state">__set_state</ulink>
  326. Si la classe ne propose pas cette méthode, une erreur fatale aboutira.
  327. </para>
  328. </warning>
  329. <warning>
  330. <title>Utilisation de eval()</title>
  331. <para>
  332. L'adaptateur <classname>PhpCode</classname> utilise <methodname>eval()</methodname>
  333. pour désérialiser. Ceci mène à des problèmes de performance et de sécurité, un nouveau processus
  334. sera crée. Typiquement, vous devriez utiliser l'adaptateur
  335. <methodname>PhpSerialize</methodname> à moins que vous ne vouliez que les données sérialisées
  336. ne soient analysables à l'oeil humain.
  337. </para>
  338. </warning>
  339. </sect2>
  340. </sect1>
  341. <!--
  342. vim:se ts=4 sw=4 et:
  343. -->