File: migration-10.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (285 lines) | stat: -rw-r--r-- 12,092 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
<?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&#160;:
        </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&#160;:
        </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&#160;:
        </para>

        <itemizedlist>
            <listitem>
                <para>Appel de <code>$this-&gt;render()</code></para>
            </listitem>
            <listitem>
                <para>Appel de <code>$this-&gt;_forward()</code></para>
            </listitem>
            <listitem>
                <para>Appel de <code>$this-&gt;_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&#160;:
        </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>&#160;:
        </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&#160;:
        </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&#160;:</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&#160;:</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&#160;:
            <itemizedlist mark="opencircle">
                <listitem>
                    <para>
                        <emphasis>position</emphasis>&#160;: Remplacement de l'ancien
                        paramètre "rules"
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>script</emphasis>&#160;: Remplacement de l'ancien
                        paramètre "script"
                    </para>

                </listitem>

                <listitem>
                    <para>
                        <emphasis>format</emphasis>&#160;: 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>&#160;: Remplacement de l'ancien
                        paramètre "rules"
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>precision</emphasis>&#160;: Nouveau paramètre
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>name</emphasis>&#160;: Remplacement de l'ancien
                        paramètre "rules". Affecte le nom complet de la monnaie.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>currency</emphasis>&#160;: Nouveau paramètre
                    </para>
                </listitem>

                <listitem>
                    <para><emphasis>symbol</emphasis>&#160;: 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>