[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / tutorials / autoloading-resources.xml
blob2f2f5c50c19338b614de2f8016eae35658ed31b4
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 19782 -->
3 <!-- Reviewed: no -->
4 <sect1 id="learning.autoloading.resources">
5     <title>Auto-chargement de resources</title>
7     <para>
8         En développant des applications, il est souvent difficile de regrouper certaines classes
9         dans une relation 1:1 avec le système de fichiers que recommande le Zend framework, ou
10         alors
11         ça ne semble pas intuitif de le faire. Cela signifie que les classes ne seront pas
12         trouvées
13         par l'autoloader.
14     </para>
16     <para>
17         Si vous lisez <link linkend="learning.autoloading.design">les caractéristiques de
18             l'architecture
19         </link>
20          de l'autoloader, le dernier point de cette section indique qu'une solution existe pour
21         un tel problème. Zend Framework utilise alors <classname>Zend_Loader_Autoloader_Resource
22         </classname>
23         .
24     </para>
26     <para>
27         Une ressource est juste un nom qui correspond à un espace de noms pour un composant
28         (qui est ajouté à l'espace de noms de l'autoloader) et un chemin (qui est relatif au
29         chemin de base de l'autoloader). Sous forme de code, vous feriez quelque chose comme:
30     </para>
32     <programlisting language="php"><![CDATA[
33 $loader = new Zend_Application_Module_Autoloader(array(
34     'namespace' => 'Blog',
35     'basePath'  => APPLICATION_PATH . '/modules/blog',
36 ));
37 ]]></programlisting>
39     <para>
40         Une fois le chargeur en place, il faut l'informer des différents types de ressources
41         qu'il va avoir à gérer. Ces types sont simplement des paires d'arbres et de préfixes.
42     </para>
44     <para>
45         Considérons ce qui suit comme exemple:
46     </para>
48     <programlisting language="text"><![CDATA[
49 path/to/some/resources/
50 |-- forms/
51 |   `-- Guestbook.php        // Foo_Form_Guestbook
52 |-- models/
53 |   |-- DbTable/
54 |   |   `-- Guestbook.php    // Foo_Model_DbTable_Guestbook
55 |   |-- Guestbook.php        // Foo_Model_Guestbook
56 |   `-- GuestbookMapper.php  // Foo_Model_GuestbookMapper
57 ]]></programlisting>
59     <para>
60         Le premier reflexe est de créer un chargeur de ressources:
61     </para>
63     <programlisting language="php"><![CDATA[
64 $loader = new Zend_Loader_Autoloader_Resource(array(
65     'basePath'  => 'path/to/some/resources/',
66     'namespace' => 'Foo',
67 ));
68 ]]></programlisting>
70     <para>
71         Puis, nous définissons des types de ressources.
72         <methodname>Zend_Loader_Autoloader_Resourse::addResourceType()</methodname> prend trois
73         arguments: le "type" de resource (une chaine arbitraire), le chemin sous le chemin de base
74         dans lequel le type de ressource doit se trouver, et le préfixe particulier à utiliser
75         pour
76         ce type de ressource. Dans l'arbre représenté ci-dessus, il y a trois types : form
77         (dans le sous-dossier "forms", avec un préfixe "Form"), model (dans le sous-dossier
78         "models",
79         avec un préfixe "Model"), et dbtable (dans le sous-dossier
80         "<filename>models/DbTable</filename>", avec un préfixe "<classname>Model_DbTable</classname>").
81         Nous les définirons comme ceci:
82     </para>
84     <programlisting language="php"><![CDATA[
85 $loader->addResourceType('form', 'forms', 'Form')
86        ->addResourceType('model', 'models', 'Model')
87        ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
88 ]]></programlisting>
90     <para>
91         Il ne reste plus qu'à utiliser les classes:
92     </para>
94     <programlisting language="php"><![CDATA[
95 $form      = new Foo_Form_Guestbook();
96 $guestbook = new Foo_Model_Guestbook();
97 ]]></programlisting>
99     <note>
100         <title>Autoload de ressource Module</title>
102         <para>
103             La couche <acronym>MVC</acronym> de Zend Framework encourage l'utilisation de
104             "modules",            qui sont des mini-applications de votre site. Les modules
105             possèdent typiquement des
106             types de ressource par défaut, et Zend Framework
107             <link linkend="project-structure.filesystem">recommande une hiérarchie de répertoires
108                 standard pour les modules
109             </link>
110             .Les autoloaders de ressources sont particulièrement
111             adaptés à cette situation -- tellement qu'ils sont activés par défaut lorsque vous
112             créez
113             des classes de bootstrap qui étendent
114             <classname>Zend_Application_Module_Bootstrap</classname>. Pour plus d'informations,
115             lisez
116             la <link
117                 linkend="zend.loader.autoloader-resource.module">documentation
118                 de
119                 Zend_Loader_Autoloader_Module
120             </link>
121             .
122         </para>
123     </note>
124 </sect1>