2
0

migration-19.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 18804 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="migration.19">
  5. <title>Zend Framework 1.9</title>
  6. <para>
  7. Wenn man von einem älteren Release auf Zend Framework 1.9 oder höher hochrüstet sollte
  8. man die folgenden Migrations Hinweise beachten.
  9. </para>
  10. <sect2 id="migration.19.zend.file.transfer">
  11. <title>Zend_File_Transfer</title>
  12. <sect3 id="migration.19.zend.file.transfer.mimetype">
  13. <title>MimeType Prüfung</title>
  14. <para>
  15. Aus Sicherheitsgründen haben wir den standardmäßigen Fallback Mechanismus der
  16. <classname>MimeType</classname>, <classname>ExcludeMimeType</classname>,
  17. <classname>IsCompressed</classname> und <classname>IsImage</classname> Prüfungen
  18. ausgeschaltet. Das bedeutet, wenn die <emphasis>fileInfo</emphasis> oder
  19. <emphasis>magicMime</emphasis> Erweiterungen nicht gefunden werden können, dann
  20. wird die Prüfung immer fehlschlagen.
  21. </para>
  22. <para>
  23. Wenn es notwendig ist das man für die Prüfung die <acronym>HTTP</acronym> Felder
  24. verwendet welche vom Benutzer geschickt werden, dann kann man dieses Feature
  25. einschalten indem die <methodname>enableHeaderCheck()</methodname> Methode
  26. verwendet wird.
  27. </para>
  28. <note>
  29. <title>Sicherheits Hinweis</title>
  30. <para>
  31. Man sollte beachten, das wenn man sich auf die <acronym>HTTP</acronym> Felder
  32. verlässt, die vom Benutzer geschickt werden, das ein Sicherheits Risiko ist.
  33. Diese können einfach geändert werden und könnten es einem Benutzer erlauben eine
  34. schädliche Datei zu schicken.
  35. </para>
  36. </note>
  37. <example id="migration.19.zend.file.transfer.example">
  38. <title>Die Verwendung der HTTP Felder erlauben</title>
  39. <programlisting language="php"><![CDATA[
  40. // Bei der Initiierung
  41. $valid = new Zend_File_Transfer_Adapter_Http(array('headerCheck' => true);
  42. // oder im Nachhinein
  43. $valid->enableHeaderCheck();
  44. ]]></programlisting>
  45. </example>
  46. </sect3>
  47. </sect2>
  48. <sect2 id="migration.19.zend.filter">
  49. <title>Zend_Filter</title>
  50. <para>
  51. Vor dem Release 1.9 erlaubte <classname>Zend_Filter</classname> die Verwendung der
  52. statischen Methode <methodname>get()</methodname>. Ab dem Release 1.9 wurde diese
  53. Methode zu <methodname>filterStatic()</methodname> umbenannt um besser zu beschreiben
  54. was Sie macht. Die alte <methodname>get()</methodname> Methode wurde als deprecated
  55. markiert.
  56. </para>
  57. </sect2>
  58. <sect2 id="migration.19.zend.http.client">
  59. <title>Zend_Http_Client</title>
  60. <sect3 id="migration.19.zend.http.client.fileuploadsarray">
  61. <title>
  62. Änderungen in der internen Speicherung der Information von hochgeladenen Dateien
  63. </title>
  64. <para>
  65. In Version 1.9 vom Zend Framework gibt es eine Ändernug wie
  66. <classname>Zend_Http_Client</classname> Informationen über hochgeladenen Dateien
  67. intern speichert, bei denen die
  68. <methodname>Zend_Http_Client::setFileUpload()</methodname> Methode verwendet wird.
  69. </para>
  70. <para>
  71. Diese Änderung wurde durchgeführt um es zu erlauben mehrere Dateien mit dem
  72. gleichen Formularnamen, als Array von Dateien, hochzuladen. Weitere Informationen
  73. über dieses Problem können in <ulink
  74. url="http://framework.zend.com/issues/browse/ZF-5744">diesem
  75. Fehlerreport</ulink> gefunden werden.
  76. </para>
  77. <example id="migration.19.zend.http.client.fileuploadsarray.example">
  78. <title>Interne Speicherung der Informationen von hochgeladenen Dateien</title>
  79. <programlisting language="php"><![CDATA[
  80. // Zwei Dateien mit dem gleichen Namen des Formularelements als Array hochladen
  81. $client = new Zend_Http_Client();
  82. $client->setFileUpload('file1.txt',
  83. 'userfile[]',
  84. 'some raw data',
  85. 'text/plain');
  86. $client->setFileUpload('file2.txt',
  87. 'userfile[]',
  88. 'some other data',
  89. 'application/octet-stream');
  90. // In Zend Framework 1.8 oder älter, ist der Wert der geschützten
  91. // Variable $client->files:
  92. // $client->files = array(
  93. // 'userfile[]' => array('file2.txt',
  94. 'application/octet-stream',
  95. 'some other data')
  96. // );
  97. // In Zend Framework 1.9 oder neuer, ist der Wert von $client->files:
  98. // $client->files = array(
  99. // array(
  100. // 'formname' => 'userfile[]',
  101. // 'filename' => 'file1.txt,
  102. // 'ctype' => 'text/plain',
  103. // 'data' => 'some raw data'
  104. // ),
  105. // array(
  106. // 'formname' => 'userfile[]',
  107. // 'filename' => 'file2.txt',
  108. // 'formname' => 'application/octet-stream',
  109. // 'formname' => 'some other data'
  110. // )
  111. // );
  112. ]]></programlisting>
  113. </example>
  114. <para>
  115. Wie man sieht gestattet diese Änderung die Verwendung des gleichen Namens für das
  116. Formularelement mit mehr als einer Datei - trotzdem führt dies zu einer subtilen
  117. Änderung der Rückwärtskompatibilität und sollte erwähnt werden.
  118. </para>
  119. </sect3>
  120. <sect3 id="migration.19.zend.http.client.getparamsrecursize">
  121. <title>
  122. Zend_Http_Client::_getParametersRecursive() sollte nicht mehr eingesetzt werden
  123. </title>
  124. <para>
  125. Beginnend mit Version 1.9, wird die geschützte Methode
  126. <methodname>_getParametersRecursive()</methodname> nicht mehr von
  127. <classname>Zend_Http_Client</classname> verwendet und ist abgelehnt (deprecated).
  128. Ihre Verwendung führt zu einer E_NOTICE Nachricht die von <acronym>PHP</acronym>
  129. kommt.
  130. </para>
  131. <para>
  132. Wenn man <classname>Zend_Http_Client</classname> erweitert und diese Methode
  133. aufrufr, sollte man sehen das man stattdessen die statische Methode
  134. <methodname>Zend_Http_Client::_flattenParametersArray()</methodname> verwendet.
  135. </para>
  136. <para>
  137. Nochmals, da <classname>_getParametersRecursive</classname> eine geschützte Methode
  138. ist, sind nur Benutzer betroffen die <classname>Zend_Http_Client</classname>
  139. erweitert haben.
  140. </para>
  141. </sect3>
  142. </sect2>
  143. <sect2 id="migration.19.zend.locale">
  144. <title>Zend_Locale</title>
  145. <sect3 id="migration.19.zend.locale.depreciated">
  146. <title>Abgelaufene Methoden</title>
  147. <para>
  148. Einige spezialisiertere Übersetzungsmethoden stehen nicht mehr zur Verfügung weil
  149. Sie bestehende Verhaltensweisen duplizieren. Beachten Sie das die alten Methoden
  150. weiterhin funktionieren, aber eine Benutzer Notiz geworfen wird, die den neuen
  151. Aufruf beschreibt. Diese Methoden werden mit 2.0 entfernt. Die folgende Liste zeigt
  152. die alten und neuen Methodenaufrufe.
  153. </para>
  154. <table id="migration.19.zend.locale.depreciated.table-1">
  155. <title>List der Methodenaufrufe</title>
  156. <tgroup cols="2">
  157. <thead>
  158. <row>
  159. <entry>Alter Aufruf</entry>
  160. <entry>Neuer Aufruf</entry>
  161. </row>
  162. </thead>
  163. <tbody>
  164. <row>
  165. <entry>getLanguageTranslationList($locale)</entry>
  166. <entry>getTranslationList('language', $locale)</entry>
  167. </row>
  168. <row>
  169. <entry>getScriptTranslationList($locale)</entry>
  170. <entry>getTranslationList('script', $locale)</entry>
  171. </row>
  172. <row>
  173. <entry>getCountryTranslationList($locale)</entry>
  174. <entry>getTranslationList('territory', $locale, 2)</entry>
  175. </row>
  176. <row>
  177. <entry>getTerritoryTranslationList($locale)</entry>
  178. <entry>getTranslationList('territory', $locale, 1)</entry>
  179. </row>
  180. <row>
  181. <entry>getLanguageTranslation($value, $locale)</entry>
  182. <entry>getTranslation($value, 'language', $locale)</entry>
  183. </row>
  184. <row>
  185. <entry>getScriptTranslation($value, $locale)</entry>
  186. <entry>getTranslation($value, 'script', $locale)</entry>
  187. </row>
  188. <row>
  189. <entry>getCountryTranslation($value, $locale)</entry>
  190. <entry>getTranslation($value, 'country', $locale)</entry>
  191. </row>
  192. <row>
  193. <entry>getTerritoryTranslation($value, $locale)</entry>
  194. <entry>getTranslation($value, 'territory', $locale)</entry>
  195. </row>
  196. </tbody>
  197. </tgroup>
  198. </table>
  199. </sect3>
  200. </sect2>
  201. <sect2 id="migration.19.zend.view.helper.navigation">
  202. <title>Zend_View_Helper_Navigation</title>
  203. <para>
  204. Vor dem Release 1.9 hat der Menü Helfer
  205. (<classname>Zend_View_Helper_Navigation_Menu</classname>) Untermenüs nicht richtig
  206. dargestellt. Wenn <code>onlyActiveBranch</code> <constant>TRUE</constant> war und die
  207. Option <code>renderParents</code> <constant>FALSE</constant> wurde nichts dargestellt
  208. wenn die tiefste aktive Seite auf einer geringeren Tiele als die <code>minDepth</code>
  209. Option war.
  210. </para>
  211. <para>
  212. In einfacheren Worten; Wenn <code>minDepth</code> auf <code>1</code> gesetzt war und
  213. die aktive Seite eine der Seiten am Anfangs-Level, wurde nichts dargestellt wie das
  214. folgende Beispiel zeigt.
  215. </para>
  216. <para>
  217. Das folgende Container Setup wird angenommen:
  218. </para>
  219. <programlisting language="php"><![CDATA[
  220. <?php
  221. $container = new Zend_Navigation(array(
  222. array(
  223. 'label' => 'Home',
  224. 'uri' => '#'
  225. ),
  226. array(
  227. 'label' => 'Products',
  228. 'uri' => '#',
  229. 'active' => true,
  230. 'pages' => array(
  231. array(
  232. 'label' => 'Server',
  233. 'uri' => '#'
  234. ),
  235. array(
  236. 'label' => 'Studio',
  237. 'uri' => '#'
  238. )
  239. )
  240. ),
  241. array(
  242. 'label' => 'Solutions',
  243. 'uri' => '#'
  244. )
  245. ));
  246. ]]></programlisting>
  247. <para>
  248. Der folgende Code wird in einem View Script verwendet:
  249. </para>
  250. <programlisting language="php"><![CDATA[
  251. <?php echo $this->navigation()->menu()->renderMenu($container, array(
  252. 'minDepth' => 1,
  253. 'onlyActiveBranch' => true,
  254. 'renderParents' => false
  255. )); ?>
  256. ]]></programlisting>
  257. <para>
  258. Vor dem Release 1.9 würde der obige Codeabschnitt nichts ausgeben.
  259. </para>
  260. <para>
  261. Seit dem Release 1.9 akzeptiert die <methodname>_renderDeepestMenu()</methodname>
  262. Methode in <classname>Zend_View_Helper_Navigation_Menu</classname> aktive Seiten die ein
  263. Level unter <code>minDepth</code> sind, solange diese Seite Kinder hat.
  264. </para>
  265. <para>
  266. Der gleiche Codeabschnitt zeigt jetzt die folgende Ausgabe:
  267. </para>
  268. <programlisting language="html"><![CDATA[
  269. <ul class="navigation">
  270. <li>
  271. <a href="#">Server</a>
  272. </li>
  273. <li>
  274. <a href="#">Studio</a>
  275. </li>
  276. </ul>
  277. ]]></programlisting>
  278. </sect2>
  279. </sect1>
  280. <!--
  281. vim:se ts=4 sw=4 et:
  282. -->