[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Controller-Basics.xml
blob1a1cfbcee9fd2a3824cc09eee78e55abd782a69f
1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- EN-Revision: 20765 -->
3 <!-- Reviewed: no -->
4 <sect1 id="zend.controller.basics">
5     <title>Fondations de Zend_Controller</title>
7     <para>
8         Le système <classname>Zend_Controller</classname> est conçu pour être léger,
9         modulaire, et extensible. Il est de conception minimaliste pour permettre la flexibilité et
10         la liberté aux utilisateurs tout en fournissant assez de structure de sorte que les
11         systèmes établis autour de <classname>Zend_Controller</classname> partagent certaines
12         conventions communes et dispositions semblables de code.
13     </para>
15     <para>
16         Le diagramme suivant décrit le déroulement des opérations, et ce qui suit décrit en
17         détail les interactions&#160;:
18     </para>
20     <para>
21         <inlinegraphic align="center" fileref="figures/zend.controller.basics.png"
22         format="PNG" scale="100" valign="middle" width="483" />
23     </para>
25     <para>
26         Le déroulement des opérations de <classname>Zend_Controller</classname> est
27         implémenté par plusieurs composants. Même s'il n'est pas nécessaire de comprendre
28         complètement les détails de tous ces composants pour employer le système, avoir une bonne
29         connaissance du fonctionnement du processus est utile.
30     </para>
32     <itemizedlist>
33         <listitem>
34             <para>
35                 <classname>Zend_Controller_Front</classname> orchestre le déroulement entier
36                 des opérations du système <classname>Zend_Controller</classname>. C'est une
37                 interprétation du modèle contrôleur frontal ("FrontController").
38                 <classname>Zend_Controller_Front</classname> traite toutes les demandes reçues par
39                 le serveur et est finalement responsable de déléguer les demandes aux contrôleurs
40                 d'action ("ActionControllers" [<classname>Zend_Controller_Action</classname>]).
41             </para>
42         </listitem>
43         <listitem>
44             <para>
45                 <classname>Zend_Controller_Request_Abstract</classname> (souvent référencé
46                 comme <code>Request Object</code>) représente l'environnement de la requête et
47                 fournit les méthodes pour régler et rechercher le contrôleur, l'action et les
48                 paramètres fournis. De plus il contient l'information si l'action qu'elle contient
49                 a été distribuée ou non par <classname>Zend_Controller_Dispatcher</classname>. Des
50                 extensions de l'objet abstrait de requête peuvent être employées pour encapsuler
51                 l'environnement entier de requête, permettant à des routeurs de récupérer les
52                 informations issues de l'environnement de requête afin de régler les noms de
53                 contrôleur et d'action.
54             </para>
55             <para>
56                 Par défaut, <classname>Zend_Controller_Request_Http</classname> est employé,
57                 ce qui permet d'accéder à l'environnement complet de requête <acronym>HTTP</acronym>.
58             </para>
59         </listitem>
60         <listitem>
61             <para>
62                 <classname>Zend_Controller_Router_Interface</classname> est employé pour
63                 définir les routeurs. Le routage est le processus d'examen de l'environnement de
64                 requête pour déterminer quel contrôleur, et action de ce contrôleur, devraient
65                 recevoir la requête. Ces contrôleur, action, et paramètres facultatifs sont alors
66                 placés dans l'objet de requête à traiter par
67                 <classname>Zend_Controller_Dispatcher_Standard</classname>. Le routage se produit
68                 seulement une fois&#160;: quand la demande est initialement reçue et avant que le
69                 premier contrôleur ne soit distribué.
70             </para>
71             <para>
72                 Le routeur par défaut, <classname>Zend_Controller_Router_Rewrite</classname>,
73                 récupère un <acronym>URI</acronym> comme indiqué dans
74                 <classname>Zend_Controller_Request_Http</classname> et le décompose en contrôleur,
75                 action, et paramètres basés sur l'information de chemin de l'URL. Par exemple,
76                 l'URL <code>http://localhost/foo/bar/key/value</code> serait décodée pour employer
77                 le contrôleur <code>foo</code>, l'action <code>bar</code>, et pour indiquer un
78                 paramètre <code>key</code> avec une valeur <code>value</code>.
79             </para>
80             <para>
81                 <classname>Zend_Controller_Router_Rewrite</classname> peut également être
82                 utilisé pour faire correspondre des chemins arbitraires&#160;; voir
83                 <link linkend="zend.controller.router">la documentation du routeur</link>pour plus
84                 d'information.
85             </para>
86         </listitem>
87         <listitem>
88             <para>
89                 <classname>Zend_Controller_Dispatcher_Interface</classname> est utilisé pour
90                 définir les distributeurs. La distribution est le processus chargé de récupérer le
91                 contrôleur et l'action issus de l'objet de requête et de les faire correspondre à
92                 un fichier/classe de contrôleur et à une méthode d'action dans la classe du
93                 contrôleur. Si le contrôleur ou l'action n'existent pas, il se charge de déterminer
94                 des contrôleurs et des actions par défaut à distribuer.
95             </para>
96             <para>
97                 Le processus de distribution réel se compose de l'instanciation de la classe
98                 de contrôleur et de l'appel de la méthode d'action dans cette classe. A la
99                 différence du routage, qui se produit seulement une fois, la distribution se
100                 produit dans une boucle. Si le statut distribué de l'objet de requête est remis à
101                 zéro à un moment quelconque, la boucle sera répétée, en appelant l'action
102                 actuellement placée dans l'objet de requête. La première fois que la boucle se
103                 termine avec une propriété de statut d'objet de requête distribué à vrai (booléen
104                 <constant>TRUE</constant>), le processus s'arrête.
105             </para>
106             <para>
107                 Le distributeur par défaut est
108                 <classname>Zend_Controller_Dispatcher_Standard</classname>. Il définit les
109                 contrôleurs comme des classes pouvant se nommer avec une série de caractère
110                 majuscules et/ou minuscules et se terminant par le mot <code>Controller</code>, et
111                 des méthodes d'action suivant la notationCamel se terminant avec le mot Action :
112                 <methodname>FooController::barAction()</methodname>. Dans ce cas-ci, le contrôleur est désigné
113                 comme <code>foo</code> et l'action comme <code>bar</code>.
114             </para>
115             <note>
116                 <title>Conventions de nommage (casse)</title>
117                 <para>
118                     Puisque les humains sont notoirement incompatibles avec le respect des
119                     majuscules et des minuscules quand ils tapent des liens, Zend Framework
120                     normalise les chemins en lettres minuscules. Ceci, naturellement, affectera
121                     votre manière d'appeler vos contrôleurs et actions... ou vous vous référez à
122                     eux dans les liens.
123                 </para>
124                 <para>
125                     Si vous souhaitez que votre classe ou action de contrôleur ait de
126                     multiples motsEnCassesMélangées ou motsEnNotationCamel, vous devrez séparer ces
127                     mots dans l'URL avec soit un tiret ("-"), soit un point (".") (bien que vous
128                     puissiez configurer le caractère utilisé).
129                 </para>
130                 <para>
131                     Par exemple, si vous souhaitez l'action
132                     <methodname>FooBarController::bazBatAction()</methodname>, vous vous referez à elle avec
133                     l'URL <code>/foo-bar/baz-bat</code> ou <code>/foo.bar/baz.bat</code>.
134                 </para>
135             </note>
136         </listitem>
137         <listitem>
138             <para>
139                 <classname>Zend_Controller_Action</classname> est le composant contrôleur
140                 d'action de base. Chaque contrôleur est une classe simple qui étend la classe de
141                 <classname>Zend_Controller_Action</classname> et devrait contenir une ou plusieurs
142                 méthodes d'action.
143             </para>
144         </listitem>
145         <listitem>
146             <para>
147                 <classname>Zend_Controller_Response_Abstract</classname> définit une classe
148                 de réponse de base employée pour rassembler et retourner les réponses des
149                 contrôleurs d'action. Il rassemble les en-têtes et le contenu du corps.
150             </para>
151             <para>
152                 La classe de réponse par défaut est
153                 <classname>Zend_Controller_Response_Http</classname>, qui convient pour l'usage
154                 dans un environnement <acronym>HTTP</acronym>.
155             </para>
156         </listitem>
157     </itemizedlist>
159     <para>
160         Le déroulement des opérations de <classname>Zend_Controller</classname> est
161         relativement simple. Une demande est reçue par
162         <classname>Zend_Controller_Front</classname>, qui appelle alternativement
163         <classname>Zend_Controller_Router_Rewrite</classname> pour déterminer le contrôleur (et
164         l'action dans ce contrôleur) à distribuer.
165         <classname>Zend_Controller_Router_Rewrite</classname> décompose l'URI afin de régler les
166         noms de contrôleur et d'action dans la requête.
167         <classname>Zend_Controller_Front</classname> entre alors dans une boucle de distribution.
168         Il appelle <classname>Zend_Controller_Dispatcher_Standard</classname>, en lui passant la
169         requête, pour distribuer le contrôleur et l'action indiqués dans la requête (ou utiliser
170         les valeurs par défaut). Après que le contrôleur ait fini, la commande revient à
171         <classname>Zend_Controller_Front</classname>. Si le contrôleur a indiqué qu'un autre
172         contrôleur devait être distribué en remettant à zéro le statut distribué de la requête, la
173         boucle continue et une autre distribution est effectuée. Sinon, le processus se
174         termine.
175     </para>
176 </sect1>