<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.config.introduction">
    <title>Einleitung</title>

    <para>
        <classname>Zend_Config</classname> wurde entworfen um den Zugriff auf und die Verwendung von
        Konfigurations-Daten zu vereinfachen. Es stellt diese Konfigurations-Daten innerhalb
        der Applikation über eine verschachtelte Objekt-Struktur zur Verfügung. Die
        Konfigurations-Daten können aus verschiedenen Datenquellen gelesen werden,
        die hierarchische Datenspeicherung unterstützen. Derzeit stellt
        <classname>Zend_Config</classname> mit <link
        linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link> und
        <link linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>
        Adapter für das Einlesen von Daten aus Textfiles zur Verfügung.
    </para>

    <example id="zend.config.introduction.example.using">
        <title>Zend-Config verwenden</title>

        <para>
            In der Regel geht man davon aus, dass Anwender eine der Adapter-Klassen wie
            <link linkend="zend.config.adapters.ini"><classname>Zend_Config_Ini</classname></link>
            oder <link
            linkend="zend.config.adapters.xml"><classname>Zend_Config_Xml</classname></link>
            verwenden. Wenn die Konfigurations-Daten aber als <acronym>PHP</acronym> Array
            vorliegen, können diese auch einfach an den <classname>Zend_Config</classname>
            Constructor übergeben werden, um dann über die objektorientierte Schnittstelle auf sie
            zugreifen zu können:
        </para>

        <programlisting language="php"><![CDATA[
// Gegeben ist ein Array mit Konfigurations-Daten
$configArray = array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

// Erstelle das objektorientierte Interface zum Datenzugriff
$config = new Zend_Config($configArray);

// Gebe einen Eintrag aus (Ausgabe ist 'www.example.com')
echo $config->webhost;

// Konfigurations-Daten benutzen, um eine Datenbank-Verbindung her zu stellen
$db = Zend_Db::factory($config->database->adapter,
                       $config->database->params->toArray());

// Alternative Verwendung: einfach das Zend_Config Objekt übergeben.
// Zend_Db factory weiß wie es zu interpretieren ist.
$db = Zend_Db::factory($config->database);
]]></programlisting>
    </example>

    <para>
        Wie das Beispiel oben zeigt, kann man über <classname>Zend_Config</classname> auf die
        Konfigurations-Daten aus dem übergebenen Array so zugreifen, wie auf die Eigenschaften
        einer verschachtelten Objekt-Struktur.
    </para>

    <para>
        Zusätzlich zum objektorientierten Zugriff auf die Daten Werte hat
        <classname>Zend_Config</classname> <methodname>get()</methodname> welches den unterstützten
        Standardwert zurückgibt wenn das Daten Element nicht existiert. Zum Beispiel:
    </para>

    <programlisting language="php"><![CDATA[
$host = $config->database->get('host', 'localhost');
]]></programlisting>

    <example id="zend.config.introduction.example.file.php">
        <title>Zend_Config mit einer PHP Konfigurationsdatei verwenden</title>

        <para>
            Es ist oft gewünscht eine reine <acronym>PHP</acronym> basierende Konfigurationsdatei
            zu verwenden. Der folgende Code zeigt wie das ganz einfach erreicht werden kann:
        </para>

        <programlisting language="php"><![CDATA[
// config.php
return array(
    'webhost'  => 'www.example.com',
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'geheim',
            'dbname'   => 'mydatabase'
        )
    )
);
]]></programlisting>

        <programlisting language="php"><![CDATA[
// Konfiguration konsumieren
$config = new Zend_Config(require 'config.php');

// Einen Konfigurationswert ausgeben (führt zu 'www.example.com')
echo $config->webhost;
]]></programlisting>
    </example>
</sect1>
