# Wprowadzenie

Klasa `Zend_Config` została stworzona aby uprościć użycie danych konfiguracyjnych w aplikacjach. Dostarcza ona interfejs bazujący na właściwościach obiektów służący do odczytywania danych konfiguracyjnych wewnątrz kodu aplikacji. Dane konfiguracyjne mogą pochodzić z różnego rodzaju źródeł, w których dane konfiguracyjne są przechowywane hierarchiczne. Obecnie `Zend_Config` dostarcza klasy obsługujące dane konfiguracyjne przechowywane w plikach tekstowych: `Zend_Config_Ini`, oraz `Zend_Config_Xml`.

## Użycie Zend_Config

Normalnie jest tak, że użytkownicy użyliby jednej z klas adaptera, takiej jak `Zend_Config_Ini` czy `Zend_Config_Xml`, ale dane konfiguracyjne mogą być też dostępne w tablicy PHP. Można w prosty sposób przekazać tablicę do konstruktora `Zend_Config` w celu uzyskania obiektu zawierającego dane konfiguracyjne:

    // Tablica danych konfiguracyjnych
    $configArray = array(
        'webhost'  => 'www.example.com',
        'database' => array(
            'adapter' => 'pdo_mysql',
            'params'  => array(
                'host'     => 'db.example.com',
                'username' => 'dbuser',
                'password' => 'secret',
                'dbname'   => 'mydatabase'
            )
        )
    );

    // Tworzy obiekt konfiguracji na podstawie danych konfiguracyjnych
    $config = new Zend_Config($configArray);

    // Wyświetlenie wpisu z konfiguracji (wynikiem jest 'www.example.com')
    echo $config->webhost;

    // Użycie danych konfiguracyjnych w celu połączenia się z bazą danych
    $db = Zend_Db::factory($config->database->adapter,
                           $config->database->params->toArray());

    // Alternartywne użycie: przekazanie obiektu Zend_Config.
    // Metoda kklasy Zend_Db wie jak zinterpretować dane.
    $db = Zend_Db::factory($config->database);

Jak zostało pokazane w powyższym przykładzie, klasa `Zend_Config` zapewnia składnię zagnieżdżonych właściwości obiektów w celu uzyskania dostępu do danych konfiguracyjnych przekazanych do konstruktora.

Oprócz zorientowanego obiektowo dostępu do wartości klasa `Zend_Config` posiada także metodę `get()` umożliwiającą zwrócenie podanej domyślnej wartości jeśli element nie istnieje. Na przykład:

    $host = $config->database->get('host', 'localhost');

## Użycie Zend_Config z plikiem konfiguracyjnym PHP

Często wskazane może być użycie do konfiguracji zwykłego pliku PHP. Poniższy kod pokazuje w jak łatwy sposób można to zrobić:

    return array(
        'webhost'  => 'www.example.com',
        'database' => array(
            'adapter' => 'pdo_mysql',
            'params'  => array(
                'host'     => 'db.example.com',
                'username' => 'dbuser',
                'password' => 'secret',
                'dbname'   => 'mydatabase'
            )
        )
    );

    // Załadowanie konfiguracji
    $config = new Zend_Config(require 'config.php');

    // Wyświetlenie danych konfiguracyjnych (powoduje wyświetlenie 'www.example.com')
    echo $config->webhost;