<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.application.available-resources.modules">
    <title>Zend_Application_Resource_Modules</title>

    <para>
        <classname>Zend_Application_Resource_Modules</classname> wird verwendet im eigene
        Anwendungsmodule zu initialisieren. Wenn das Modul eine <filename>Bootstrap.php</filename>
        Datei in seinem Root hat, und es eine Klasse die <classname>Module_Bootstrap</classname>
        heißt enthält (wobei "Module" der Modulname ist), dann wird diese Klasse verwendet um das
        Modul zu bootstrappen.
    </para>

    <para>
        Standardmäßig wird eine Instanz vom
        <classname>Zend_Application_Module_Autoloader</classname> für das Modul erstellt, indem der
        Modulname und das Verzeichnis dazu verwendet werden sie zu initialisieren.
    </para>

    <para>
        Da die Modul Ressourcen standardmäßig keine Argumente entgegen nehmen muss man, um das
        über die Konfiguration zu gestatten, diese als leeres Array erstellen. In der
        <acronym>INI</acronym> Stil Konfiguration sieht das etwa so aus:
    </para>

    <programlisting language="ini"><![CDATA[
resources.modules[] =
]]></programlisting>

    <para>
        In <acronym>XML</acronym> Stil Konfiguration sieht das etwa so aus:
    </para>

    <programlisting language="xml"><![CDATA[
<resources>
    <modules>
        <!-- Platzhlter um sicherzustellen das ein Array erstellt wird -->
        <placeholder />
    </modules>
</resources>
]]></programlisting>

    <para>
        Bei Verwendung eines <acronym>PHP</acronym> Arrays, einfach Erstellen indem ein leeres
        Array verwendet wird:
    </para>

    <programlisting language="php"><![CDATA[
$options = array(
    'resources' => array(
        'modules' => array(),
    ),
);
]]></programlisting>

    <note>
        <title>Abhängigkeiten der Front Controller Ressource</title>

        <para>
            Die Module Ressource hat eine Abhängigkeit zur
            <link linkend="zend.application.available-resources.frontcontroller">Front Controller
            Ressource</link>. Man kann natürlich seine eigenen Ersatz für diese Ressource, über
            eine eigene Front Controller Ressource Klasse, anbieten oder eine
            Initialisierungsmethode für eine Klasse -- solange die Ressource Plugin Klasse mit
            "Frontcontroller" endet, oder die Initialisierungsmethode "_initFrontController"
            heißt (abhängig von der Groß- und Kleinschreibung).
        </para>
    </note>

    <example id="zend.application.available-resources.modules.configExample">
        <title>Module konfigurieren</title>

        <para>
            Man kann eine modul-spezifische Konfiguration spezifizieren indem der Modulname als
            Präfix oder Unter-Sektion in der Konfigurationsdatei verwendet wird.
        </para>

        <para>
            Nehmen wir als Beispiel an, das die eigene Anwendung ein "news" Modul hat. Nachfolgend
            sind die <acronym>INI</acronym> und <acronym>XML</acronym> Beispiele die eine
            Konfiguration von Ressourcen in diesem Modul zeigen.
        </para>

        <programlisting language="ini"><![CDATA[
[production]
news.resources.db.adapter = "pdo_mysql"
news.resources.db.params.host = "localhost"
news.resources.db.params.username = "webuser"
news.resources.db.params.password = "XXXXXXX"
news.resources.db.params.dbname = "news"
]]></programlisting>

        <programlisting language="xml"><![CDATA[
<?xml version="1.0"?>
<config>
    <production>
        <news>
            <resources>
                <db>
                    <adapter>pdo_mysql</adapter>
                    <params>
                        <host>localhost</host>
                        <username>webuser</username>
                        <password>XXXXXXX</password>
                        <dbname>news</dbname>
                    </params>
                    <isDefaultAdapter>true</isDefaultAdapter>
                </db>
            </resources>
        </news>
    </production>
</config>
]]></programlisting>
    </example>

    <example id="zend.application.available-resources.modules.retrieveBootstrapExample">
        <title>Eine spezielle Modul Bootstrap erhalten</title>

        <para>
            Manchmal will man ein Bootstrap Objekt für ein spezifisches Modul erhalten --
            möglicherweise um andere Bootstrap Methoden auszuführen, oder um den Autoloader zu
            holen damit er konfiguriert werden kann. Das kann man erreichen indem die
            <methodname>getExecutedBootstraps()</methodname> Methode der Modul Ressource verwendet
            wird.
        </para>

        <programlisting language="php"><![CDATA[
$resource = $bootstrap->getPluginResource('modules');
$moduleBootstraps = $resource->getExecutedBootstraps();
$newsBootstrap = $moduleBootstraps['news'];
]]></programlisting>
    </example>
</sect2>
