| 12
 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 :
        </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>
 |