<?xml version="1.0" encoding="UTF-8"?>
<!-- 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
        : configurer l'environnement <acronym>PHP</acronym> environment (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><property>phpSettings</property></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><property>includePaths</property></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><property>autoloaderNamespaces</property></entry>
                    <entry><para>
                        Tableau d'espaces de noms à enregistrer dans
                        <classname>Zend_Loader_Autoloader</classname>.
                    </para></entry>
                </row>

                <row>
                    <entry><property>bootstrap</property></entry>
                    <entry><para>
                        Soit une chaine 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>Methode</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>: <emphasis>requis</emphasis>,.
                                Chaine représentant l'environnement actuel dans lequel tourne l'application
                                Par exemple "development", "testing", "qa", ou "production".
                                Les significations de ces chaines sont à définir par la suite.
                            </para></listitem>

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

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

                                <listitem><para>
                                    <emphasis><classname>Zend_Config</classname></emphasis>:
                                    Instance de Zend_Config.
                                </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>: <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>: 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>: La clé de l'option à récupérer
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Récupère l'option correspondant à la clé passée, null 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>: <emphasis>requis</emphasis>.
                            Tableau associatif de paramètres <acronym>PHP</acronym> <acronym>INI</acronym>
                        </para></listitem>

                        <listitem><para>
                            <varname>$prefix</varname>: <emphasis>optionnel</emphasis>.
                            Préfixe pour construire la chaine des clés d'options.
                            Utilisée en interne pour les tableau à plusieurs niveaux concernant
                            <filename>php.ini</filename> keys. 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 nichés hiérarchiquement (comme dans le cas des paramètre
                        <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>: <emphasis>requis</emphasis>.
                            Tableau de chaines 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>: <emphasis>requis</emphasis>. Peut être soit un objet de
                            <classname>Zend_Application_Bootstrap_Bootstrapper</classname>
                            , soit une chaine représentant le chemib 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>: <emphasis>optionnel</emphasis>.
                            Si <varname>$path</varname> est une chaine,
                            <varname>$class</varname> doit être indiqué et doit être une chaine
                            représentant le nom d'une classe contenue dans le fichier représenté par $path.
                        </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>
