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

    <para>
        <classname>Zend_Application</classname> bietet die Basisfunktionalität der Komponente, und
        ist der Eintrittspunkt zur eigenen Zend Framework Anwendung. Sein Zweck ist zweigeteilt: das
        Setup der <acronym>PHP</acronym> Umgebung (inklusive Autoloading), und das
        Anwendungs-Bootstrap auszuführen.
    </para>

    <para>
        Typischerweise, wird man die komplette Konfiguration an den
        <classname>Zend_Application</classname> Konstruktor übergeben, aber man kann das Objekt auch
        komplett konfigurieren indem dessen eigene Methoden verwendet werden. Diese Referenz dient
        dazu beide Fälle zu zeigen.
    </para>

    <table id="zend.application.core-functionality.application.api.options">
        <title>Optionen für Zend_Application</title>
        <tgroup cols="2">
            <thead>
                <row>
                    <entry>Option</entry>
                    <entry>Beschreibung</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><emphasis><property>phpSettings</property></emphasis></entry>
                    <entry><para>
                        Array von <filename>php.ini</filename> Einstellungen die zu verwenden sind.
                        Die Schlüssel sollten die <filename>php.ini</filename> Schlüssel sein.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>includePaths</property></emphasis></entry>
                    <entry><para>
                        Zusätzliche Pfade die dem <emphasis>include_path</emphasis> vorangestellt
                        werden. Sollte ein Array von Pfaden sein.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>autoloaderNamespaces</property></emphasis></entry>
                    <entry><para>
                        Array von zusätzlichen Namespaces die bei der
                        <classname>Zend_Loader_Autoloader</classname> Instanz zu registrieren sind.
                    </para></entry>
                </row>

                <row>
                    <entry><emphasis><property>bootstrap</property></emphasis></entry>
                    <entry><para>
                        Entweder der String mit dem Pfad zur Bootstrap Klasse, oder ein Array mit
                        Elementen für 'path' und 'class' für den Bootstrap der Anwendung.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>

    <note>
        <title>Namen der Optionen</title>

        <para>
            Beachten Sie das die Namen für die Optionen von der Groß-/Kleinschreibung abhängen.
        </para>
    </note>

    <table id="zend.application.core-functionality.application.api.table">
        <title>Zend_Application Methoden</title>
        <tgroup cols="4">
            <thead>
                <row>
                    <entry>Methode</entry>
                    <entry>Rückgabewert</entry>
                    <entry>Parameter</entry>
                    <entry>Beschreibung</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>Benötigt</emphasis>,.
                                String Repräsentation der aktuellen Anwendungsumgebung.
                                Typischerweise kann ein String "development", "testing", "qa"
                                oder "production" enthalten, wird aber von den eigenen
                                organisatorischen Notwendigkeiten bestimmt.
                            </para></listitem>

                            <listitem>
                            <para>
                                <varname>$options</varname>: <emphasis>Optional</emphasis>.
                                Das Argument kann einen der folgenden Werte haben:
                            </para>
                            <itemizedlist>
                                <listitem><para>
                                    <emphasis><type>String</type></emphasis>: Pfad zu einer
                                    <classname>Zend_Config</classname> Datei für die eigene
                                    Anwendung. <varname>$environment</varname> wird verwendet um zu
                                    erkennen welche Sektion der Konfiguration geholt werden soll.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><type>Array</type></emphasis>: Assoziatives Array von
                                    Konfigurationsdaten für die eigene Anwendung.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><classname>Zend_Config</classname></emphasis>: Objekt
                                    Instanz der Konfiguration.
                                </para></listitem>
                            </itemizedlist>
                        </listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Konstruktor. Die Argumente sind wie beschrieben, und werden verwendet
                        um den initialen Objektstatus zu setzen. Eine Instanz von
                        <classname>Zend_Loader_Autoloader</classname> wird wärend der Instanziierung
                        registriert. Optionen die an den Konstruktor übergeben werden, werden
                        an <methodname>setOptions()</methodname> weitergeleitet.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getEnvironment()</methodname></entry>
                    <entry><type>String</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Empfangen des Umgebungsstrings der an den Konstruktor übergeben wurde.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getAutoloader()</methodname></entry>
                    <entry><classname>Zend_Loader_Autoloader</classname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Empfangen der <classname>Zend_Loader_Autoloader</classname> Instanz die
                        wärend der Instanziierung registriert wurde.
                    </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>Benötigt</emphasis>.
                            Ein Array von Anweundungsoptionen.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Alle Optionen werden intern gespeichert, und der mehrfache Aufruf der
                        Methode wird Optionen zusammenfügen. Optionen die zu den verschiedenen
                        Setter Methoden passen werden an diese Methoden übergeben. Als Beispiel
                        wird die Option "phpSettings" dann an
                        <methodname>setPhpSettings()</methodname> übergeben. (Optionsnamen sind
                        abhängig von der Groß-/Kleinschreibung.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOptions()</methodname></entry>
                    <entry><type>Array</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Empfängt alle Optionen die verwendet wurden um das Objekt zu
                        initialisieren; könnte verwendet werden um
                        <classname>Zend_Config</classname> Optionen zwischen Anfragen in ein
                        serialisierbares Format zu cachen.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>hasOption($key)</methodname></entry>
                    <entry><type>Boolean</type></entry>
                    <entry>
                    <itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>: String des Optionsschlüssels der gesucht wird.
                        </para></listitem>
                    </itemizedlist>
                    </entry>
                    <entry><para>
                        Erkennt ob eine Option mit dem spezifizierten Schlüssel registriert wurde
                        oder nicht. Schlüssel sind unabhängig von der Groß-/Kleinschreibung.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOption($key)</methodname></entry>
                    <entry><type>Mixed</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>: String des Optionsschlüssels der gesucht wird.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Empfängt den Optionswert eines angegebenen Schlüssels. Gibt null zurück
                        wenn der Schlüssel nicht existiert.
                    </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>Benötigt</emphasis>.
                            Assoziatives Array von <acronym>PHP</acronym> <acronym>INI</acronym>
                            Einstellungen.
                        </para></listitem>

                        <listitem><para>
                            <varname>$prefix</varname>: <emphasis>Optional</emphasis>.
                            String Präfix der Optionsschlüssel vorangestellt werden soll. Wird
                            intern verwendet um das Mapping von verschachtelten Array zu
                            Punkt-getrennten <filename>php.ini</filename> Schlüssels zu erlauben.
                            Bei normaler Verwendung sollte dieses Argument nie von einem Benutzer
                            übergeben werden.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Setzt Laufzeit <filename>php.ini</filename> Einstellungen. Punkt-getrennte
                        Einstellungen können hierarchisch verschachtelt sein (welche in
                        <classname>Zend_Config</classname> <acronym>INI</acronym> Dateien auftreten
                        können) über ein Array-von-Arrays, und wird trotzdem korrekt aufgelöst.
                    </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>Benötigt</emphasis>.
                            Array von Strings die den Namespace repräsentieren der mit der
                            <classname>Zend_Loader_Autoloader</classname> Instanz registriert wird.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Registriert den Namespace mit der
                        <classname>Zend_Loader_Autoloader</classname> Instanz.
                    </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>Benötigt</emphasis>.
                            Kann entweder eine Instanz von
                            <classname>Zend_Application_Bootstrap_Bootstrapper</classname>, ein
                            String Pfad zur Bootstrap Klasse, ein assoziatives Array von Klassenname
                            =&gt; Dateiname, oder ein assoziatives Array mit den Schlüsseln 'class'
                            und 'path' sein.
                        </para></listitem>

                        <listitem><para>
                            <varname>$class</varname>: <emphasis>Optional</emphasis>. Wenn
                            <varname>$path</varname> ein String ist, kann <varname>$class</varname>
                            spezifiziert werden, und sollte ein String des Klassennamens der
                            Klasse sein die in der Datei enthalten ist die den Pfad repräsentiert.
                        </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>
                        Empfängt die registrierte Bootstrap Instanz.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>bootstrap()</methodname></entry>
                    <entry><type>Void</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Ruft die <methodname>bootstrap()</methodname> Methode des Bootstraps auf um
                        die Anwendung zu bootstrappen.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>run()</methodname></entry>
                    <entry><type>Void</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Ruft die <methodname>run()</methodname> Methode des Bootstraps auf um die
                        Anwendung auszuführen.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>
</sect2>
