migration-110.xml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18683 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="migration.110">
  5. <title>Zend Framework 1.10</title>
  6. <para>
  7. Wenn man von einem älteren Release auf Zend Framework 1.10 oder höher hochrüstet sollte
  8. man die folgenden Migrations Hinweise beachten.
  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 Prüfung</title>
  14. <para>
  15. Vor dem Release 1.10 hat die <classname>MimeType</classname> Prüfung eine falsche
  16. Benennung verwendet. Aus Gründen der Konsistenz wurden die folgenden Konstanten
  17. geändert:
  18. </para>
  19. <table id="migration.110.zend.file.transfer.count.table">
  20. <title>Geänderte Prüfmeldungen</title>
  21. <tgroup cols="4">
  22. <thead>
  23. <row>
  24. <entry>Alt</entry>
  25. <entry>Neu</entry>
  26. <entry>Wert</entry>
  27. </row>
  28. </thead>
  29. <tbody>
  30. <row>
  31. <entry><constant>TOO_MUCH</constant></entry>
  32. <entry><constant>TOO_MANY</constant></entry>
  33. <entry>
  34. Too many files, maximum '%max%' are allowed but '%count%' are given
  35. </entry>
  36. </row>
  37. <row>
  38. <entry><constant>TOO_LESS</constant></entry>
  39. <entry><constant>TOO_FEW</constant></entry>
  40. <entry>
  41. Too few files, minimum '%min%' are expected but '%count%' are given
  42. </entry>
  43. </row>
  44. </tbody>
  45. </tgroup>
  46. </table>
  47. <para>
  48. Wenn man diese Meldungen im eigenen Code übersetzt dann sollte man die neuen
  49. Konstanten verwenden. Als Vorteil muss man den originalen String im englischen nicht
  50. mehr übersetzen um die richtige Schreibweise zu erhalten.
  51. </para>
  52. </sect3>
  53. <sect3 id="migration.110.zend.file.transfer.mimetype">
  54. <title>MimeType Prüfung</title>
  55. <para>
  56. Aus Sicherheitsgründen haben wir den standardmäßigen Fallback Mechanismus der
  57. <classname>MimeType</classname>, <classname>ExcludeMimeType</classname>,
  58. <classname>IsCompressed</classname> und <classname>IsImage</classname> Prüfungen
  59. ausgeschaltet. Das bedeutet, wenn die <emphasis>fileInfo</emphasis> oder
  60. <emphasis>magicMime</emphasis> Erweiterungen nicht gefunden werden können, dann
  61. wird die Prüfung immer fehlschlagen.
  62. </para>
  63. <para>
  64. Wenn es notwendig ist das man für die Prüfung die <acronym>HTTP</acronym> Felder
  65. verwendet welche vom Benutzer geschickt werden, dann kann man dieses Feature
  66. einschalten indem die <methodname>enableHeaderCheck()</methodname> Methode
  67. verwendet wird.
  68. </para>
  69. <note>
  70. <title>Sicherheits Hinweis</title>
  71. <para>
  72. Man sollte beachten, das wenn man sich auf die <acronym>HTTP</acronym> Felder
  73. verlässt, die vom Benutzer geschickt werden, das ein Sicherheits Risiko ist.
  74. Diese können einfach geändert werden und könnten es einem Benutzer erlauben eine
  75. schädliche Datei zu schicken.
  76. </para>
  77. </note>
  78. <example id="migration.110.zend.file.transfer.example">
  79. <title>Die Verwendung der HTTP Felder erlauben</title>
  80. <programlisting language="php"><![CDATA[
  81. // Bei der Initiierung
  82. $valid = new Zend_File_Transfer_Adapter_Http(array('headerCheck' => true);
  83. // oder im Nachhinein
  84. $valid->enableHeaderCheck();
  85. ]]></programlisting>
  86. </example>
  87. </sect3>
  88. </sect2>
  89. <sect2 id="migration.110.zend.validate">
  90. <title>Zend_Validate</title>
  91. <sect3 id="migration.110.zend.validate.selfwritten">
  92. <title>Selbst geschriebene Adapter</title>
  93. <para>
  94. Wenn in einer selbst geschriebenen Prüfung ein Fehler gesetzt wird um diesen
  95. zurückzugeben muß die <methodname>_error()</methodname> Methode aufgerufen werden.
  96. Vor Zend Framework 1.10 konnte man diese Methode ohne einen angegebenen Parameter
  97. aufrufen. Es wurde dann das erste gefundene Nachrichtentemplate verwendet.
  98. </para>
  99. <para>
  100. Dieses Verhalten ist problematisch wenn man Prüfungen hat die mehr als eine
  101. Nachricht zurückgeben kann. Auch wenn man eine existierende Prüfung erweitert kann
  102. man unerwartete Ergebnisse erhalten. Das kann zum Problem führen das der Benutzer
  103. nicht die Nachricht erhält die man erwartet.
  104. </para>
  105. <programlisting language="php"><![CDATA[
  106. My_Validator extends Zend_Validate_Abstract
  107. {
  108. public isValid($value)
  109. {
  110. ...
  111. $this->_error(); // Unerwartete Ergebnisse zwischen verschiedenen OS
  112. ...
  113. }
  114. }
  115. ]]></programlisting>
  116. <para>
  117. Um dieses Problem zu verhindern erlaubt es die <methodname>_error()</methodname>
  118. Methode nicht mehr ohne einen angegebenen Parameter aufgerufen zu werden.
  119. </para>
  120. <programlisting language="php"><![CDATA[
  121. My_Validator extends Zend_Validate_Abstract
  122. {
  123. public isValid($value)
  124. {
  125. ...
  126. $this->_error(self::MY_ERROR);
  127. // Definierter Fehler, keine unerwarteten Ergebnisse
  128. ...
  129. }
  130. }
  131. ]]></programlisting>
  132. </sect3>
  133. <sect3 id="migration.110.zend.validate.datevalidator">
  134. <title>Vereinfachungen im Date Prüfer</title>
  135. <para>
  136. Vor Zend Framework 1.10 wurden 2 identische Nachrichten im Date Prüfer geworfen.
  137. Es gab <constant>NOT_YYYY_MM_DD</constant> und <constant>FALSEFORMAT</constant>.
  138. Ab Zend Framework 1.10 wird nur mehr die <constant>FALSEFORMAT</constant> Meldung
  139. zurückgegeben wenn das angegebene Datum mit dem gesetzten Format nicht
  140. übereinstimmt.
  141. </para>
  142. </sect3>
  143. <sect3 id="migration.110.zend.validate.barcodevalidator">
  144. <title>Fehlerbehebungen im Alpha, Alum und Barcode Prüfer</title>
  145. <para>
  146. Vor dem Zend Framework 1.10 waren Nachrichten in den 2 Barcode Adaptern, dem Alpha
  147. und dem Alnum Prüfer identisch. Das führte zu Problemen bei der Verwendung von
  148. eigenen Meldungen, Übersetzungen oder mehreren Instanzen dieser Prüfer.
  149. </para>
  150. <para>
  151. Mit Zend Framework 1.10 wurden die Werte dieser Konstanten so geändert das Sie
  152. eindeutig sind. Wenn man, so wie es im Handbuhc erklärt wird, die Konstanten
  153. verwendet gibt es keine Änderungen. Aber wenn man den Inhalt der Konstanten im
  154. eigenen Code verwendet dann muß man diese Ändern. Die folgende Tabelle zeigt die
  155. geänderten Werte:
  156. </para>
  157. <table id="migration.110.zend.validate.barcodevalidator.table">
  158. <title>Vorhandenen Meldungen der Prüfer</title>
  159. <tgroup cols="3">
  160. <thead>
  161. <row>
  162. <entry>Prüfer</entry>
  163. <entry>Konstante</entry>
  164. <entry>Wert</entry>
  165. </row>
  166. </thead>
  167. <tbody>
  168. <row>
  169. <entry>Alnum</entry>
  170. <entry><constant>STRING_EMPTY</constant></entry>
  171. <entry>alnumStringEmpty</entry>
  172. </row>
  173. <row>
  174. <entry>Alpha</entry>
  175. <entry><constant>STRING_EMPTY</constant></entry>
  176. <entry>alphaStringEmpty</entry>
  177. </row>
  178. <row>
  179. <entry>Barcode_Ean13</entry>
  180. <entry><constant>INVALID</constant></entry>
  181. <entry>ean13Invalid</entry>
  182. </row>
  183. <row>
  184. <entry>Barcode_Ean13</entry>
  185. <entry><constant>INVALID_LENGTH</constant></entry>
  186. <entry>ean13InvalidLength</entry>
  187. </row>
  188. <row>
  189. <entry>Barcode_UpcA</entry>
  190. <entry><constant>INVALID_LENGTH</constant></entry>
  191. <entry>upcaInvalidLength</entry>
  192. </row>
  193. <row>
  194. <entry>Digits</entry>
  195. <entry><constant>STRING_EMPTY</constant></entry>
  196. <entry>digitsStringEmpty</entry>
  197. </row>
  198. </tbody>
  199. </tgroup>
  200. </table>
  201. </sect3>
  202. </sect2>
  203. </sect1>
  204. <!--
  205. vim:se ts=4 sw=4 et:
  206. -->