File: Zend_Config_Writer.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 (196 lines) | stat: -rw-r--r-- 8,305 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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24604 -->
<!-- Reviewed: no -->
<sect1 id="zend.config.writer.introduction">
    <title>Zend_Config_Writer</title>

    <para>
        <classname>Zend_Config_Writer</classname> vous donne la possibilité d'écrire des
        fichiers de configuration à partir d'objets <classname>Zend_Config</classname>. Il
        fonctionne avec des adaptateurs détachés du système et est donc très simple à utiliser. Par
        défaut <classname>Zend_Config_Writer</classname> embarque trois adaptateurs, qui
        fonctionnent tous sur la base de fichiers. Vous instanciez un rédacteur ("writer") avec des
        options spécifiques, qui peuvent être <emphasis>filename</emphasis> et
        <emphasis>config</emphasis>. Ensuite
        vous pouvez appeler la méthode <methodname>write()</methodname> du rédacteur et le fichier
        de configuration est créé. Vous pouvez aussi fournir <varname>$filename</varname> et
        <varname>$config</varname> directement à la méthode <methodname>write()</methodname>.
        Actuellement les
        rédacteurs suivants sont embarqués avec <classname>Zend_Config_Writer</classname>&#160;:
    </para>

    <itemizedlist>
        <listitem>
            <para><classname>Zend_Config_Writer_Array</classname></para>
        </listitem>
        <listitem>
            <para><classname>Zend_Config_Writer_Ini</classname></para>
        </listitem>
         <listitem>
             <para><classname>Zend_Config_Writer_Json</classname></para>
        </listitem>
        <listitem>
            <para><classname>Zend_Config_Writer_Xml</classname></para>
         </listitem>
        <listitem>
            <para><classname>Zend_Config_Writer_Yaml</classname></para>
        </listitem>
    </itemizedlist>

    <para>
        Lors de la modification ou la création d'objet <classname>Zend_Config</classname>, il
        y a quelques informations à garder en mémoire. Pour créer ou modifier une valeur, vous
        appelez simplement le réglage d'un paramètre d'un objet <classname>Zend_Config</classname>
        grâce à l'accesseur de paramètre ("<emphasis>-&gt;</emphasis>"). Pour créer une section à
        la racine ou pour créer une branche, vous avez juste à créer un nouveau tableau
        (<command>$config-&gt;branch = array();</command>). Pour définir quelle section en étend
        une autre, vous devez appeler la méthode <methodname>setExtend()</methodname> sur l'objet
        <classname>Zend_Config</classname> racine.
    </para>

    <example id="zend.config.writer.example.using">
        <title>Utilisation de Zend_Config_Writer</title>

        <para>
            Cet exemple illustre une utilisation basique
            <classname>Zend_Config_Writer_Xml</classname> pour créer un nouveau fichier de
            configuration&#160;:
        </para>

        <programlisting language="php"><![CDATA[
// Créer l'objet de configuration
$config = new Zend_Config(array(), true);
$config->production = array();
$config->staging    = array();

$config->setExtend('staging', 'production');

$config->production->db = array();
$config->production->db->hostname = 'localhost';
$config->production->db->username = 'production';

$config->staging->db = array();
$config->staging->db->username = 'staging';

// Ecrire le fichier de l'une des manières suivantes :
// a)
$writer = new Zend_Config_Writer_Xml(array('config'   => $config,
                                           'filename' => 'config.xml'));
$writer->write();

// b)
$writer = new Zend_Config_Writer_Xml();
$writer->setConfig($config)
       ->setFilename('config.xml')
       ->write();

// c)
$writer = new Zend_Config_Writer_Xml();
$writer->write('config.xml', $config);
]]></programlisting>

        <para>
            Ceci créera un fichier de configuration <acronym>XML</acronym> avec les sections
            "production" et "staging", où "staging" étend "production".
        </para>
    </example>

    <example id="zend.config.writer.modifying">
        <title>Modifier une configuration existante</title>

        <para>
            Cet exemple montre comment modifier un fichier de configuration
            existant&#160;:
        </para>

        <programlisting language="php"><![CDATA[
// Charger toutes les sections d'un fichier de configuration existant,
// tout en évitant les sections étendues.
$config = new Zend_Config_Ini('config.ini',
                              null,
                              array('skipExtends'        => true,
                                    'allowModifications' => true));

// Modifier une valeur
$config->production->hostname = 'foobar';

// Ecrire le fichier
$writer = new Zend_Config_Writer_Ini(array('config'   => $config,
                                           'filename' => 'config.ini'));
$writer->write();
]]></programlisting>
    </example>

    <note>
        <title>Chargement d'un fichier de configuration</title>
        <para>
            Lors du chargement d'un fichier de configuration existant afin de le modifier, il
            est très important de charger toutes les sections et d'éviter les sections étendues,
            évitant ainsi toute fusion de valeurs. Ceci est réalisé en fournissant l'option
            <emphasis>skipExtends</emphasis> au constructeur.
        </para>
    </note>

    <para>
        Pour tous les rédacteurs à base de fichiers (<acronym>INI</acronym>,
        <acronym>JSON</acronym>, <acronym>XML</acronym>, <acronym>YAML</acronym>,
        et tableau <acronym>PHP</acronym>), en interne la méthode <methodname>render()</methodname>
        est utilisée pour construire la chaîne de configuration. Cette méthode peut être utilisée
        en dehors de la classe si vous souhaitez accéder à une représentation textuelle de vos
        données de configuration.
    </para>

    <sect2 id="zend.config.writer.introduction.ini-notes">
        <title>Notes spécifiques au rédacteur INI</title>

        <itemizedlist>
            <listitem>
                 <para>
                    Le rédacteur <acronym>INI</acronym> possède deux modes de rendu en fonction des
                    sections. Par défaut la configuration de premier niveau est toujours écrite
                    dans des noms de section. En appelant
                    <command>$writer->setRenderWithoutSections();</command>, toutes les options
                    sont écrites dans l'espace de noms global du fichier <acronym>INI</acronym>
                    et aucune section n'est appliquée.
                </para>
            </listitem>

            <listitem>
                <para>
                    De plus, <classname>Zend_Config_Writer_Ini</classname> a un
                    paramètre optionnel additionnel <emphasis>nestSeparator</emphasis>, définissant
                    le caractère séparant les profondeurs d'imbrication. Par défaut il s'agit
                    du point, comme <classname>Zend_Config_Ini</classname> l'accepte par défaut.
                </para>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="zend.config.writer.introduction.yaml-notes">
        <title>Notes spécifiques au rédacteur YAML</title>

        <para>
            Le rédacteur <acronym>YAML</acronym> vous permet de spécifier un encodeur
            <acronym>YAML</acronym> alternatif. Dans la plupart des cas, celui embarqué dans
            le framework suffira amplement. Si vous le trouvez insuffisant, ou que vous souhaitez
            une YAML plus avancé, vous pouvez fournir un autre encodeur.
        </para>

        <para>
            La mthode pour le faire est
            <methodname>Zend_Config_Writer_Yaml::setYamlEncoder()</methodname>, vous  devez lui
            fournir un callback valide.
        </para>

        <programlisting language="php"><![CDATA[
// Use the Symfony Yaml Component:
$writer = new Zend_Config_Writer_Yaml($filename);
$writer->setYamlEncoder(array('sfYaml', 'dump'));
]]></programlisting>

        <para>
            Ci-dessus nous utilisons le composant de Symfony <classname>sfYaml</classname> pour
            encoder la configuration en <acronym>YAML</acronym>.
        </para>
    </sect2>
</sect1>