<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17171 -->
<!-- Reviewed: no -->
<sect2 id="zend.application.core-functionality.application">
    <title>Zend_Application</title>

    <para>
        <classname>Zend_Application</classname> est la classe de base du composant
        et le point d'entrée de votre application Zend Framework. Ses buts sont multiples&#160;:
        configurer l'environnement <acronym>PHP</acronym> (incluant l'autoloading)
        et exécuter le bootstrap de votre application.
    </para>

    <para>
        Typiquement, vous allez passer toute la configuration au constructeur de
        <classname>Zend_Application</classname>, mais vous pouvez aussi configurer l'objet
        via ses méthodes. Ce chapitre illustrera les deux aspects.
    </para>

    <table id="zend.application.core-functionality.application.api.options">
        <title>Zend_Application options</title>
        <tgroup cols="2">
            <thead>
                <row>
                    <entry>Option</entry>
                    <entry>Description</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><emphasis><property>phpSettings</property></emphasis></entry>
                    <entry><para>
                        Tableau de paramètres <filename>php.ini</filename> à utiliser.
                        Les clés doivent être des clés reconnues dans
                        <filename>php.ini</filename>.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>includePaths</property></emphasis></entry>
                    <entry><para>
                        Chemins additionnels à ajouter à <emphasis>include_path</emphasis>.
                        Ces chemins sont ajoutés avant l'include_path.
                        L'option doit être un tableau de chemins.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>autoloaderNamespaces</property></emphasis></entry>
                    <entry><para>
                        Tableau d'espaces de noms à enregistrer dans
                        <classname>Zend_Loader_Autoloader</classname>.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>bootstrap</property></emphasis></entry>
                    <entry><para>
                        Soit une chaîne vers le fichier contenant la classe de bootstrap, soit un
                        tableau avec les clés 'path' et 'class' menant vers le bootstrap.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <note>
        <title>Noms des options</title>

        <para>
            Notez que les noms des options ne sont pas sensibles à la casse.
        </para>
    </note>

    <table id="zend.application.core-functionality.application.api.table">
        <title>Méthodes dans Zend_Application</title>
        <tgroup cols="4">
            <thead>
                <row>
                    <entry>Méthode</entry>
                    <entry>Valeur de retour</entry>
                    <entry>Paramètres</entry>
                    <entry>Description</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry>
                        <methodname>__construct($environment, $options = null)</methodname>
                    </entry>
                    <entry><type>Void</type></entry>
                    <entry><itemizedlist>
                            <listitem><para>
                                <varname>$environment</varname>&#160;: <emphasis>requis</emphasis>,
                                Chaîne représentant l'environnement actuel dans lequel tourne
                                l'application. Par exemple "development", "testing", "qa", ou
                                "production". Les significations de ces chaînes sont à définir
                                par la suite.
                            </para></listitem>

                            <listitem>
                            <para>
                                <varname>$options</varname>&#160;: <emphasis>optionnel</emphasis>.
                            </para>
                            <itemizedlist>
                                <listitem><para>
                                    <emphasis><type>String</type></emphasis>&#160;: chemin vers
                                    un fichier <classname>Zend_Config</classname> à charger pour
                                    la configuration de votre application.
                                    <varname>$environment</varname> sera utilisé pour déterminer
                                    la section de configuration à charger depuis le fichier.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><type>Array</type></emphasis>&#160;: tableau
                                    associatif de données de configuration pour votre application.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><classname>Zend_Config</classname></emphasis>&#160;:
                                    un instance d'objet de configuration.
                                </para></listitem>
                            </itemizedlist>
                        </listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Une instance de <classname>Zend_Loader_Autoloader</classname> est
                        enregistrée lors de l'instanciation. Les options passées au
                        constructeur sont passées à <methodname>setOptions()</methodname>.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getEnvironment()</methodname></entry>
                    <entry><type>String</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Récupère l'environnement passé au constructeur.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getAutoloader()</methodname></entry>
                    <entry><classname>Zend_Loader_Autoloader</classname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Récupère l'objet <classname>Zend_Loader_Autoloader</classname>
                        enregistré lors de l'instanciation.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setOptions(array $options)</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$options</varname>&#160;: <emphasis>requis</emphasis>.
                            Un tableau d'options pour l'application.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Toutes les options sont stockées en interne, et appeler plusieurs fois
                        la même méthode fusionnera les options qu'elle définit. Les options qui
                        correspondent aux diverses méthodes setter seront passées à ces méthodes.
                        Par exemple, l'option "phpSettings" sera passée à
                        <methodname>setPhpSettings()</methodname>.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOptions()</methodname></entry>
                    <entry><type>Array</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Récupère toutes les options utilisées pour initialiser l'objet.
                        Pourrait être utilisé pour mettre en cache les options
                        <classname>Zend_Config</classname> entre chaque requête, par exemple.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>hasOption($key)</methodname></entry>
                    <entry><type>Boolean</type></entry>
                    <entry>
                    <itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>&#160;: La clé de l'option à chercher
                        </para></listitem>
                    </itemizedlist>
                    </entry>
                    <entry><para>
                        Indique si une option correspondant à une clé précise a été utilisée
                        ou pas. Les clés sont insensibles à la casse.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOption($key)</methodname></entry>
                    <entry>
                        <type>Mixed</type>
                    </entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>&#160;: La clé de l'option à récupérer
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Récupère l'option correspondant à la clé passée, <constant>NULL</constant>
                        si celle-ci n'existe pas.
                    </para></entry>
                </row>

                <row>
                    <entry>
                        <methodname>setPhpSettings(array $settings, $prefix = '')</methodname>
                    </entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$settings</varname>&#160;: <emphasis>requis</emphasis>.
                            Tableau associatif de paramètres <acronym>PHP</acronym>
                            <acronym>INI</acronym>
                        </para></listitem>

                        <listitem><para>
                            <varname>$prefix</varname>&#160;: <emphasis>optionnel</emphasis>.
                            Préfixe pour construire la chaîne des clés d'options.
                            Utilisée en interne pour faire correspondre les clés
                            <filename>php.ini</filename> séparés par des points (".") avec des
                            tableaux à plusieurs niveaux. En temps normal, cet argument
                            ne devrait jamais être utilisé par l'utilisateur.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Affecte à la volée des paramètres de <filename>php.ini</filename>.
                        Les paramètres séparés par des points peuvent être imbriqués
                        hiérarchiquement (comme dans le cas des paramètres
                        <acronym>INI</acronym> de <classname>Zend_Config</classname>).
                    </para></entry>
                </row>

                <row>
                    <entry>
                        <methodname>setAutoloaderNamespaces(array $namespaces)</methodname>
                    </entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$namespaces</varname>&#160;: <emphasis>requis</emphasis>.
                            Tableau de chaînes représentant les espaces de noms à enregistrer dans
                            <classname>Zend_Loader_Autoloader</classname>.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Enregistre des espaces de noms dans
                        <classname>Zend_Loader_Autoloader</classname>.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setBootstrap($path, $class = null)</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$path</varname>&#160;: <emphasis>requis</emphasis>. Peut
                            être soit un objet de
                            <classname>Zend_Application_Bootstrap_Bootstrapper</classname>,
                            soit une chaîne représentant le chemin vers la classe de bootstrap,
                            soit un tableau associatif nom de classe =&gt; chemin de fichier,
                            ou encore un tableau associatif avec les clés "class" et "path".
                        </para></listitem>

                        <listitem><para>
                            <varname>$class</varname>&#160;: <emphasis>optionnel</emphasis>.
                            Si <varname>$path</varname> est une chaîne, <varname>$class</varname>
                            doit être indiqué et doit être une chaîne représentant le nom d'une
                            classe contenue dans le fichier représenté par le chemin.
                        </para></listitem>
                    </itemizedlist></entry>
                </row>

                <row>
                    <entry><methodname>getBootstrap()</methodname></entry>
                    <entry>
                        <constant>NULL</constant> |
                        <classname>Zend_Application_Bootstrap_Bootstrapper</classname>
                    </entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Récupère l'instance du bootstrap enregistrée.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>bootstrap()</methodname></entry>
                    <entry><type>Void</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Appelle la méthode <methodname>bootstrap()</methodname> du bootstrap pour
                        lancer l'application.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>run()</methodname></entry>
                    <entry><type>Void</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Appelle la méthode <methodname>run()</methodname> du bootstrap pour
                        lancer le dispatch de l'application.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>
</sect2>
