3.2. Zend_Config_Array

3.2.1. Wprowadzenie

Klasa Zend_Config_Array umożliwia programistom przechowywanie danych konfiguracyjnych w wielowymiarowych tablicach PHP i uzyskanie dostępu do nich jak do właściwości obiektu za pomocą Zend_Config.

Przykład 3.2. Dane konfiguracyjne przechowywane jako tablice PHP

Ten przykład pokazuje proste użycie klasy Zend_Config_Array do ładowania danych konfiguracyjnych z tablic PHP. Wpierw tworzymy tablice PHP zawierające dane konfiguracyjne:

<?php
// Podstawowe dane konfiguracyjne
$config['production'] = array(
    'webhost' => 'www.example.com',
    'database' => array(
        'type'     => 'pdo_mysql',
        'host'     => 'db.example.com',
        'username' => 'dbuser',
        'password' => 'secret',
        'name'     => 'dbname'
    )
);

// Konfiguracja aplikacji rozbudowywanej dziedziczy z podstawowej
// konfiguracji, a niektóre wartości są nadpisywane
$config['staging'] = $config['production'];
$config['staging']['webhost'] = 'dev.example.com';
$config['staging']['database']['host'] = 'dev.example.com';
$config['staging']['database']['username'] = 'devuser';
$config['staging']['database']['password'] = 'devsecret';
?>           

[Notatka] Notatka
Tablica zawierająca dane konfiguracyjne znajdująca się w załadowanym skrypcie powinna nazywać się $config.

Dziedzieczenie w powyższym przykładzie jest obsługiwane przez przypisanie wartości sekcji production do sekcji staging. Teraz prostą sprawą jest załadowanie danych konfiguracyjnych za pomocą Zend_Config_Array:

<?php
require_once 'Zend/Config.php';
require_once 'Zend/Config/Array.php';

$config = new Zend_Config(Zend_Config_Array::load('/path/to/config.php', 'staging'));

echo $config->database->host; // wyświetla "dev.example.com"
?>           

Ten sposób jest godny uwagi, ponieważ dane konfiguracyjne są bezpośrednio przechowywane w tablicach PHP, a każda wartość danych konfiguracyjnych ma ten sam typ jak w tablicy $config z pliku konfiguracyjnego.

<?php
$config['staging']['debug']   = 'false'; // wartośc jest łańcuchem znaków
$config['staging']['console'] = false; // wartość jest zmienną logiczną
$config['staging']['timeout'] = 30; // wartość jest liczbą całkowitą
?>