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 |
|---|---|
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ą ?>