migration-10.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="migration.10">
  5. <title>Zend Framework 1.0</title>
  6. <para>
  7. Lors de la migration d'un version précédente vers Zend Framework 0.8 ou plus récent
  8. vous devriez prendre note de ce qui suit.
  9. </para>
  10. <sect2 id="migration.10.zend.controller">
  11. <title>Zend_Controller</title>
  12. <para>
  13. Les principaux changements introduits dans la version 1.0.0RC1 sont l'ajout et
  14. l'activation par défaut du plugin
  15. <link linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link>et de
  16. l'aide d'action
  17. <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>.
  18. Veuillez lire la documentation de chacun des éléments directement pour apprendre leur
  19. fonctionnement et quels effets, ils peuvent avoir sur vos applications.
  20. </para>
  21. <para>
  22. Le plugin <code>ErrorHandler</code> est exécuté pendant
  23. <methodname>postDispatch()</methodname> vérifiant la présence d'exceptions, et redirigeant vers le
  24. contrôleur de gestion d'erreur spécifié. Vous pouvez le désactiver en réglant le
  25. paramètre <code>noErrorHandler</code> du contrôleur frontal&#160;:
  26. </para>
  27. <programlisting language="php"><![CDATA[
  28. $front->setParam('noErrorHandler', true);
  29. ]]></programlisting>
  30. <para>
  31. L'aide d'action <code>ViewRenderer</code> automatise l'injection de vues dans les
  32. contrôleurs d'action en tant qu'autogénération des scripts de vues suivant l'action
  33. courante. Le principal problème que vous pourriez rencontrer intervient quand vous avez
  34. des actions qui ne rendent pas de scripts de vues ni ne font suivre ou redirige, alors
  35. <code>ViewRenderer</code> va tenter de rendre un script de vue basé sur le nom de
  36. l'action.
  37. </para>
  38. <para>
  39. Il existe plusieurs possibilités pour mettre à jour votre code. Dans un premier
  40. temps, vous pouvez globalement désactiver <code>ViewRenderer</code> dans votre fichier
  41. d'amorçage du contrôleur frontal avant toute distribution&#160;:
  42. </para>
  43. <programlisting language="php"><![CDATA[
  44. // En considérant que $front est une instance de Zend_Controller_Front
  45. $front->setParam('noViewRenderer', true);
  46. ]]></programlisting>
  47. <para>
  48. Cependant, ceci n'est pas une bonne stratégie à long terme, car il apparaît
  49. aisément que vous devrez écrire plus de code.
  50. </para>
  51. <para>
  52. Quand vous serez prêt à utiliser la fonctionnalité <code>ViewRenderer</code>, il
  53. y a plusieurs choses à vérifier dans votre code de contrôleur. Premièrement, regardez
  54. vos méthodes d'actions (les méthodes se terminant par "Action"), et déterminez ce que
  55. chacune d'elle réalise. Si rien de ce qui suit n'est réalisé, vous devrez réaliser des
  56. changements&#160;:
  57. </para>
  58. <itemizedlist>
  59. <listitem>
  60. <para>Appel de <code>$this-&gt;render()</code></para>
  61. </listitem>
  62. <listitem>
  63. <para>Appel de <code>$this-&gt;_forward()</code></para>
  64. </listitem>
  65. <listitem>
  66. <para>Appel de <code>$this-&gt;_redirect()</code></para>
  67. </listitem>
  68. <listitem>
  69. <para>Appel de l'aide d'action <code>Redirector</code></para>
  70. </listitem>
  71. </itemizedlist>
  72. <para>
  73. Le changement le plus simple est la désactivation de l'auto-rendu pour cette
  74. méthode&#160;:
  75. </para>
  76. <programlisting language="php"><![CDATA[
  77. $this->_helper->viewRenderer->setNoRender();
  78. ]]></programlisting>
  79. <para>
  80. Si vous trouvez qu'aucune de vos méthodes d'actions n'effectue de rendu, ne font
  81. suivre, ou redirige, vous pouvez préférer mettre la ligne suivante dans la méthode
  82. <methodname>preDispatch()</methodname> ou <methodname>init()</methodname>&#160;:
  83. </para>
  84. <programlisting language="php"><![CDATA[
  85. public function preDispatch()
  86. {
  87. // désactive l'auto-rendu des scripts de vues
  88. $this->_helper->viewRenderer->setNoRender()
  89. // ... faire autre chose ...
  90. }
  91. ]]></programlisting>
  92. <para>
  93. Si vous appelez <methodname>render()</methodname>, et que vous utilisez la
  94. <link linkend="zend.controller.modular">structure de dossier modulaire
  95. conventionnelle</link>, vous voudrez modifier votre code pour utiliser
  96. l'auto-rendu&#160;:
  97. </para>
  98. <itemizedlist>
  99. <listitem>
  100. <para>
  101. Si vous rendez de multiples scripts de vues dans une seule action, vous
  102. n'avez rien à modifier.
  103. </para>
  104. </listitem>
  105. <listitem>
  106. <para>
  107. Si vous appelez simplement <methodname>render()</methodname> sans aucun argument,
  108. vous pouvez effacer ces lignes.
  109. </para>
  110. </listitem>
  111. <listitem>
  112. <para>
  113. Si vous appelez <methodname>render()</methodname> avec des arguments, et que vous ne
  114. réalisez pas ensuite d'exécution de code ou effectuez le rendu de scripts de
  115. vues multiples, vous pouvez changer ces appels par
  116. <code>$this->_helper->viewRenderer()</code>.
  117. </para>
  118. </listitem>
  119. </itemizedlist>
  120. <para>
  121. Si vous n'utilisez pas la structure de dossier modulaire conventionnelle, il
  122. existe une variété de méthodes pour paramétrer le chemin de base des vues et les
  123. spécifications du chemin vers les scripts ainsi vous pourrez utiliser
  124. <code>ViewRenderer</code>. Veuillez lire la
  125. <link linkend="zend.controller.actionhelpers.viewrenderer">documentation de
  126. ViewRenderer</link>pour plus d'informations sur ces méthodes.
  127. </para>
  128. <para>
  129. Si vous utilisez un objet de vue issu du registre, ou que vous personnalisez
  130. votre objet vue, ou que vous utilisez une implémentation de vue différente, vous pouvez
  131. vouloir injecter <code>ViewRenderer</code> dans cet objet. Ceci peut être réalisé
  132. facilement à tout moment.
  133. </para>
  134. <itemizedlist>
  135. <listitem>
  136. <para>Avant la distribution d'une instance de contrôleur frontal&#160;:</para>
  137. <programlisting language="php"><![CDATA[
  138. // En considérant que $view a déjà été définie
  139. $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
  140. Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
  141. ]]></programlisting>
  142. </listitem>
  143. <listitem>
  144. <para>A tout moment durant le processus d'amorçage&#160;:</para>
  145. <programlisting language="php"><![CDATA[
  146. $viewRenderer =
  147. Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
  148. $viewRenderer->setView($view);
  149. ]]></programlisting>
  150. </listitem>
  151. </itemizedlist>
  152. <para>
  153. Il existe plusieurs manières de modifier <code>ViewRenderer</code>, incluant le
  154. réglage d'un script de vue différent à rendre, la spécification d'un remplaçant pour
  155. tous les éléments remplaçables d'un chemin de script de vues (incluant le suffixe), le
  156. choix d'un segment nommé de la réponse à utiliser, et plus encore. Si vous n'utilisez
  157. pas la structure de dossier modulaire conventionnelle, vous pouvez tout de même
  158. associer différentes spécifications de chemin à <code>ViewRenderer</code>.
  159. </para>
  160. <para>
  161. Nous vous encourageons à adapter votre code pour utiliser
  162. <code>ErrorHandler</code> et <code>ViewRenderer</code> puisqu'il s'agit maintenant de
  163. fonctionnalités natives.
  164. </para>
  165. </sect2>
  166. <sect2 id="migration.10.zend.currency">
  167. <title>Zend_Currency</title>
  168. <para>
  169. Créer un objet <classname>Zend_Currency</classname> est devenu plus simple. Vous
  170. n'avez plus besoin de passer un script ou de le mettre à <constant>NULL</constant>, le
  171. paramètre script est optionnel et peut être spécifié par la méthode
  172. <methodname>setFormat()</methodname>.
  173. </para>
  174. <programlisting language="php"><![CDATA[
  175. $currency = new Zend_Currency($currency, $locale);
  176. ]]></programlisting>
  177. <para>
  178. La méthode <methodname>setFormat()</methodname> prend maintenant en paramètre un tableau
  179. d'options. Ces options sont permanentes et écrasent les précédentes déjà présentes. La
  180. nouvelle option "precision" a été intégrée&#160;:
  181. <itemizedlist mark="opencircle">
  182. <listitem>
  183. <para>
  184. <emphasis>position</emphasis>&#160;: Remplacement de l'ancien
  185. paramètre "rules"
  186. </para>
  187. </listitem>
  188. <listitem>
  189. <para>
  190. <emphasis>script</emphasis>&#160;: Remplacement de l'ancien
  191. paramètre "script"
  192. </para>
  193. </listitem>
  194. <listitem>
  195. <para>
  196. <emphasis>format</emphasis>&#160;: Remplacement de l'ancien
  197. paramètre "locale" qui n'affecte plus de nouvelle monnaie, mais seulement un
  198. format de nombre.
  199. </para>
  200. </listitem>
  201. <listitem>
  202. <para>
  203. <emphasis>display</emphasis>&#160;: Remplacement de l'ancien
  204. paramètre "rules"
  205. </para>
  206. </listitem>
  207. <listitem>
  208. <para>
  209. <emphasis>precision</emphasis>&#160;: Nouveau paramètre
  210. </para>
  211. </listitem>
  212. <listitem>
  213. <para>
  214. <emphasis>name</emphasis>&#160;: Remplacement de l'ancien
  215. paramètre "rules". Affecte le nom complet de la monnaie.
  216. </para>
  217. </listitem>
  218. <listitem>
  219. <para>
  220. <emphasis>currency</emphasis>&#160;: Nouveau paramètre
  221. </para>
  222. </listitem>
  223. <listitem>
  224. <para><emphasis>symbol</emphasis>&#160;: Nouveau paramètre</para>
  225. </listitem>
  226. </itemizedlist>
  227. </para>
  228. <programlisting language="php"><![CDATA[
  229. $currency->setFormat(array $options);
  230. ]]></programlisting>
  231. <para>
  232. La méthode <methodname>toCurrency()</methodname> ne supporte plus les paramètres optionnels
  233. "script" et "locale". A la place, elle accepte un tableau d'options qui sera de la même
  234. forme que celui utilisé par <code>setFormat</code>.
  235. </para>
  236. <programlisting language="php"><![CDATA[
  237. $currency->toCurrency($value, array $options);
  238. ]]></programlisting>
  239. <para>
  240. Les méthodes <methodname>getSymbol()</methodname>, <methodname>getShortName()</methodname>,
  241. <methodname>getName()</methodname>, <methodname>getRegionList()</methodname> et <methodname>getCurrencyList()</methodname>
  242. ne sont plus statiques. Elles retournent les valeurs affectées dans l'objet, si on ne
  243. leur passe pas de paramètre.
  244. </para>
  245. </sect2>
  246. </sect1>