migration-110.xml 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18682 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="migration.110">
  5. <title>Zend Framework 1.10</title>
  6. <para>
  7. Lors de la migration d'un version précédente vers Zend Framework 1.10 ou plus récent
  8. vous devriez prendre note de ce qui suit.
  9. </para>
  10. <sect2 id="migration.110.zend.file.transfer">
  11. <title>Zend_File_Transfer</title>
  12. <sect3 id="migration.110.zend.file.transfer.count">
  13. <title>Count validation</title>
  14. <para>
  15. Before release 1.10 the <classname>MimeType</classname> validator used a wrong
  16. naming. For consistency the following constants have been changed:
  17. </para>
  18. <table id="migration.110.zend.file.transfer.count.table">
  19. <title>Changed Validation Messages</title>
  20. <tgroup cols="4">
  21. <thead>
  22. <row>
  23. <entry>Old</entry>
  24. <entry>New</entry>
  25. <entry>Value</entry>
  26. </row>
  27. </thead>
  28. <tbody>
  29. <row>
  30. <entry><constant>TOO_MUCH</constant></entry>
  31. <entry><constant>TOO_MANY</constant></entry>
  32. <entry>
  33. Too many files, maximum '%max%' are allowed but '%count%' are given
  34. </entry>
  35. </row>
  36. <row>
  37. <entry><constant>TOO_LESS</constant></entry>
  38. <entry><constant>TOO_FEW</constant></entry>
  39. <entry>
  40. Too few files, minimum '%min%' are expected but '%count%' are given
  41. </entry>
  42. </row>
  43. </tbody>
  44. </tgroup>
  45. </table>
  46. <para>
  47. When you are translating these messages within your code then use the new constants.
  48. As benefit you don't need to translate the original string anymore to get a correct
  49. spelling.
  50. </para>
  51. </sect3>
  52. <sect3 id="migration.110.zend.file.transfer.mimetype">
  53. <title>MimeType validation</title>
  54. <para>
  55. For security reasons we had to turn off the default fallback mechanism of the
  56. <classname>MimeType</classname>, <classname>ExcludeMimeType</classname>,
  57. <classname>IsCompressed</classname> and <classname>IsImage</classname> validators.
  58. This means, that if the <emphasis>fileInfo</emphasis> or
  59. <emphasis>magicMime</emphasis> extensions can not be found, the validation will
  60. always fail.
  61. </para>
  62. <para>
  63. If you are in need of validation by using the <acronym>HTTP</acronym> fields which
  64. are provided by the user then you can turn on this feature by using the
  65. <methodname>enableHeaderCheck()</methodname> method.
  66. </para>
  67. <note>
  68. <title>Security hint</title>
  69. <para>
  70. You should note that relying on the <acronym>HTTP</acronym> fields, which are
  71. provided by your user, is a security risk. They can easily be changed and could
  72. allow your user to provide a malcious file.
  73. </para>
  74. </note>
  75. <example id="migration.110.zend.file.transfer.example">
  76. <title>Allow the usage of the HTTP fields</title>
  77. <programlisting language="php"><![CDATA[
  78. // at initiation
  79. $valid = new Zend_File_Transfer_Adapter_Http(array('headerCheck' => true);
  80. // or afterwards
  81. $valid->enableHeaderCheck();
  82. ]]></programlisting>
  83. </example>
  84. </sect3>
  85. </sect2>
  86. <sect2 id="migration.110.zend.validate">
  87. <title>Zend_Validate</title>
  88. <sect3 id="migration.110.zend.validate.selfwritten">
  89. <title>Adaptateurs personnels</title>
  90. <para>
  91. Lorsqu'une erreur apparait dans un adaptateur crée de toute pièce,
  92. <methodname>_error()</methodname> doit être appelée. Avant Zend Framework 1.10, il était
  93. possible d'appeler cette méthode sans aucun paramètre. Le premier template de message d'erreur
  94. était alors utilisé.
  95. </para>
  96. <para>
  97. Ce comportement est problématique lorsque vous avez des validateurs retournant plusieurs messages.
  98. Aussi, étendre un validateur peut mener à des comportements inattendus dans une telle situation,
  99. comme par exemple l'apparition du mauvais message d'erreur.
  100. </para>
  101. <programlisting language="php"><![CDATA[
  102. My_Validator extends Zend_Validate_Abstract
  103. {
  104. public isValid($value)
  105. {
  106. ...
  107. $this->_error(); // Résultat inattendu
  108. ...
  109. }
  110. }
  111. ]]></programlisting>
  112. <para>
  113. Pour éviter ces problèmes <methodname>_error()</methodname> doit desormais
  114. prendre obligatoirement un paramètre.
  115. </para>
  116. <programlisting language="php"><![CDATA[
  117. My_Validator extends Zend_Validate_Abstract
  118. {
  119. public isValid($value)
  120. {
  121. ...
  122. $this->_error(self::MY_ERROR); // Ok, erreur définie
  123. ...
  124. }
  125. }
  126. ]]></programlisting>
  127. </sect3>
  128. <sect3 id="migration.110.zend.validate.datevalidator">
  129. <title>Simplification dans le validateur des dates</title>
  130. <para>
  131. Avant Zend Framework 1.10, 2 messages identiques étaient envoyés dans le validateur
  132. des dates. <constant>NOT_YYYY_MM_DD</constant> et
  133. <constant>FALSEFORMAT</constant>. Depuis Zend Framework 1.10, seul
  134. <constant>FALSEFORMAT</constant> sera retourné lorsque la date passée ne correspond pas
  135. au format demandé.
  136. </para>
  137. </sect3>
  138. <sect3 id="migration.110.zend.validate.barcodevalidator">
  139. <title>Corrections dans Alpha, Alnum et Barcode</title>
  140. <para>
  141. Avant Zend Framework 1.10, les messages dans les 2 validateurs barcode, le Alpha
  142. et le Alnum étaient identiques. Des problèmes pouvaient alors faire surface avec des
  143. messages personnalisés, des traducteurs ou des instances multiples des validateurs.
  144. </para>
  145. <para>
  146. Depuis Zend Framework 1.10, les valeurs des constantes ont changé pour être uniques.
  147. Si vous utilisiez les constantes comme le manuel le recommande, aucun changement n'est nécessaire.
  148. Mais si vous utilisiez les messages d'erreurs, alors il faudra les changer. Voici les changements
  149. opérés:
  150. </para>
  151. <table id="migration.110.zend.validate.barcodevalidator.table">
  152. <title>Messages de validation disponibles</title>
  153. <tgroup cols="3">
  154. <thead>
  155. <row>
  156. <entry>Validateur</entry>
  157. <entry>Constante</entry>
  158. <entry>Valeur</entry>
  159. </row>
  160. </thead>
  161. <tbody>
  162. <row>
  163. <entry>Alnum</entry>
  164. <entry><constant>STRING_EMPTY</constant></entry>
  165. <entry>alnumStringEmpty</entry>
  166. </row>
  167. <row>
  168. <entry>Alpha</entry>
  169. <entry><constant>STRING_EMPTY</constant></entry>
  170. <entry>alphaStringEmpty</entry>
  171. </row>
  172. <row>
  173. <entry>Barcode_Ean13</entry>
  174. <entry><constant>INVALID</constant></entry>
  175. <entry>ean13Invalid</entry>
  176. </row>
  177. <row>
  178. <entry>Barcode_Ean13</entry>
  179. <entry><constant>INVALID_LENGTH</constant></entry>
  180. <entry>ean13InvalidLength</entry>
  181. </row>
  182. <row>
  183. <entry>Barcode_UpcA</entry>
  184. <entry><constant>INVALID</constant></entry>
  185. <entry>upcaInvalid</entry>
  186. </row>
  187. <row>
  188. <entry>Barcode_UpcA</entry>
  189. <entry><constant>INVALID_LENGTH</constant></entry>
  190. <entry>upcaInvalidLength</entry>
  191. </row>
  192. <row>
  193. <entry>Digits</entry>
  194. <entry><constant>STRING_EMPTY</constant></entry>
  195. <entry>digitsStringEmpty</entry>
  196. </row>
  197. </tbody>
  198. </tgroup>
  199. </table>
  200. </sect3>
  201. </sect2>
  202. </sect1>