| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="migration.10">
- <title>Zend Framework 1.0</title>
- <para>
- Lors de la migration d'un version précédente vers Zend Framework 0.8 ou plus récent
- vous devriez prendre note de ce qui suit.
- </para>
- <sect2 id="migration.10.zend.controller">
- <title>Zend_Controller</title>
- <para>
- Les principaux changements introduits dans la version 1.0.0RC1 sont l'ajout et
- l'activation par défaut du plugin
- <link linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link>et de
- l'aide d'action
- <link linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>.
- Veuillez lire la documentation de chacun des éléments directement pour apprendre leur
- fonctionnement et quels effets, ils peuvent avoir sur vos applications.
- </para>
- <para>
- Le plugin <code>ErrorHandler</code> est exécuté pendant
- <methodname>postDispatch()</methodname> vérifiant la présence d'exceptions, et redirigeant vers le
- contrôleur de gestion d'erreur spécifié. Vous pouvez le désactiver en réglant le
- paramètre <code>noErrorHandler</code> du contrôleur frontal :
- </para>
- <programlisting language="php"><![CDATA[
- $front->setParam('noErrorHandler', true);
- ]]></programlisting>
- <para>
- L'aide d'action <code>ViewRenderer</code> automatise l'injection de vues dans les
- contrôleurs d'action en tant qu'autogénération des scripts de vues suivant l'action
- courante. Le principal problème que vous pourriez rencontrer intervient quand vous avez
- des actions qui ne rendent pas de scripts de vues ni ne font suivre ou redirige, alors
- <code>ViewRenderer</code> va tenter de rendre un script de vue basé sur le nom de
- l'action.
- </para>
- <para>
- Il existe plusieurs possibilités pour mettre à jour votre code. Dans un premier
- temps, vous pouvez globalement désactiver <code>ViewRenderer</code> dans votre fichier
- d'amorçage du contrôleur frontal avant toute distribution :
- </para>
- <programlisting language="php"><![CDATA[
- // En considérant que $front est une instance de Zend_Controller_Front
- $front->setParam('noViewRenderer', true);
- ]]></programlisting>
- <para>
- Cependant, ceci n'est pas une bonne stratégie à long terme, car il apparaît
- aisément que vous devrez écrire plus de code.
- </para>
- <para>
- Quand vous serez prêt à utiliser la fonctionnalité <code>ViewRenderer</code>, il
- y a plusieurs choses à vérifier dans votre code de contrôleur. Premièrement, regardez
- vos méthodes d'actions (les méthodes se terminant par "Action"), et déterminez ce que
- chacune d'elle réalise. Si rien de ce qui suit n'est réalisé, vous devrez réaliser des
- changements :
- </para>
- <itemizedlist>
- <listitem>
- <para>Appel de <code>$this->render()</code></para>
- </listitem>
- <listitem>
- <para>Appel de <code>$this->_forward()</code></para>
- </listitem>
- <listitem>
- <para>Appel de <code>$this->_redirect()</code></para>
- </listitem>
- <listitem>
- <para>Appel de l'aide d'action <code>Redirector</code></para>
- </listitem>
- </itemizedlist>
- <para>
- Le changement le plus simple est la désactivation de l'auto-rendu pour cette
- méthode :
- </para>
- <programlisting language="php"><![CDATA[
- $this->_helper->viewRenderer->setNoRender();
- ]]></programlisting>
- <para>
- Si vous trouvez qu'aucune de vos méthodes d'actions n'effectue de rendu, ne font
- suivre, ou redirige, vous pouvez préférer mettre la ligne suivante dans la méthode
- <methodname>preDispatch()</methodname> ou <methodname>init()</methodname> :
- </para>
- <programlisting language="php"><![CDATA[
- public function preDispatch()
- {
- // désactive l'auto-rendu des scripts de vues
- $this->_helper->viewRenderer->setNoRender()
- // ... faire autre chose ...
- }
- ]]></programlisting>
- <para>
- Si vous appelez <methodname>render()</methodname>, et que vous utilisez la
- <link linkend="zend.controller.modular">structure de dossier modulaire
- conventionnelle</link>, vous voudrez modifier votre code pour utiliser
- l'auto-rendu :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Si vous rendez de multiples scripts de vues dans une seule action, vous
- n'avez rien à modifier.
- </para>
- </listitem>
- <listitem>
- <para>
- Si vous appelez simplement <methodname>render()</methodname> sans aucun argument,
- vous pouvez effacer ces lignes.
- </para>
- </listitem>
- <listitem>
- <para>
- Si vous appelez <methodname>render()</methodname> avec des arguments, et que vous ne
- réalisez pas ensuite d'exécution de code ou effectuez le rendu de scripts de
- vues multiples, vous pouvez changer ces appels par
- <code>$this->_helper->viewRenderer()</code>.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Si vous n'utilisez pas la structure de dossier modulaire conventionnelle, il
- existe une variété de méthodes pour paramétrer le chemin de base des vues et les
- spécifications du chemin vers les scripts ainsi vous pourrez utiliser
- <code>ViewRenderer</code>. Veuillez lire la
- <link linkend="zend.controller.actionhelpers.viewrenderer">documentation de
- ViewRenderer</link>pour plus d'informations sur ces méthodes.
- </para>
- <para>
- Si vous utilisez un objet de vue issu du registre, ou que vous personnalisez
- votre objet vue, ou que vous utilisez une implémentation de vue différente, vous pouvez
- vouloir injecter <code>ViewRenderer</code> dans cet objet. Ceci peut être réalisé
- facilement à tout moment.
- </para>
- <itemizedlist>
- <listitem>
- <para>Avant la distribution d'une instance de contrôleur frontal :</para>
- <programlisting language="php"><![CDATA[
- // En considérant que $view a déjà été définie
- $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
- Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>A tout moment durant le processus d'amorçage :</para>
- <programlisting language="php"><![CDATA[
- $viewRenderer =
- Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
- $viewRenderer->setView($view);
- ]]></programlisting>
- </listitem>
- </itemizedlist>
- <para>
- Il existe plusieurs manières de modifier <code>ViewRenderer</code>, incluant le
- réglage d'un script de vue différent à rendre, la spécification d'un remplaçant pour
- tous les éléments remplaçables d'un chemin de script de vues (incluant le suffixe), le
- choix d'un segment nommé de la réponse à utiliser, et plus encore. Si vous n'utilisez
- pas la structure de dossier modulaire conventionnelle, vous pouvez tout de même
- associer différentes spécifications de chemin à <code>ViewRenderer</code>.
- </para>
- <para>
- Nous vous encourageons à adapter votre code pour utiliser
- <code>ErrorHandler</code> et <code>ViewRenderer</code> puisqu'il s'agit maintenant de
- fonctionnalités natives.
- </para>
- </sect2>
- <sect2 id="migration.10.zend.currency">
- <title>Zend_Currency</title>
- <para>
- Créer un objet <classname>Zend_Currency</classname> est devenu plus simple. Vous
- n'avez plus besoin de passer un script ou de le mettre à <constant>NULL</constant>, le
- paramètre script est optionnel et peut être spécifié par la méthode
- <methodname>setFormat()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $currency = new Zend_Currency($currency, $locale);
- ]]></programlisting>
- <para>
- La méthode <methodname>setFormat()</methodname> prend maintenant en paramètre un tableau
- d'options. Ces options sont permanentes et écrasent les précédentes déjà présentes. La
- nouvelle option "precision" a été intégrée :
- <itemizedlist mark="opencircle">
- <listitem>
- <para>
- <emphasis>position</emphasis> : Remplacement de l'ancien
- paramètre "rules"
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>script</emphasis> : Remplacement de l'ancien
- paramètre "script"
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>format</emphasis> : Remplacement de l'ancien
- paramètre "locale" qui n'affecte plus de nouvelle monnaie, mais seulement un
- format de nombre.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>display</emphasis> : Remplacement de l'ancien
- paramètre "rules"
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>precision</emphasis> : Nouveau paramètre
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>name</emphasis> : Remplacement de l'ancien
- paramètre "rules". Affecte le nom complet de la monnaie.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>currency</emphasis> : Nouveau paramètre
- </para>
- </listitem>
- <listitem>
- <para><emphasis>symbol</emphasis> : Nouveau paramètre</para>
- </listitem>
- </itemizedlist>
- </para>
- <programlisting language="php"><![CDATA[
- $currency->setFormat(array $options);
- ]]></programlisting>
- <para>
- La méthode <methodname>toCurrency()</methodname> ne supporte plus les paramètres optionnels
- "script" et "locale". A la place, elle accepte un tableau d'options qui sera de la même
- forme que celui utilisé par <code>setFormat</code>.
- </para>
- <programlisting language="php"><![CDATA[
- $currency->toCurrency($value, array $options);
- ]]></programlisting>
- <para>
- Les méthodes <methodname>getSymbol()</methodname>, <methodname>getShortName()</methodname>,
- <methodname>getName()</methodname>, <methodname>getRegionList()</methodname> et <methodname>getCurrencyList()</methodname>
- ne sont plus statiques. Elles retournent les valeurs affectées dans l'objet, si on ne
- leur passe pas de paramètre.
- </para>
- </sect2>
- </sect1>
|