Dane konfiguracyjne są przekazywane do konstruktora Zend_Config
w postaci asocjacyjnej tablicy, która może być wielowymiarowa, po to, aby
obsłużyć dane zorganizowane w różny sposób, od prostych po specyficzne.
Konkretny adapter posiada funkcjonalność przystosowującą przechowywane dane
konfiguracyjne do wygenerowania tablicy asocjacyjnej dla konstruktora
Zend_Config
. Skrypt użytkownika może przekazać taką tablicę
bezpośrednio do konstruktora Zend_Config
, nie używając klasy
adaptera, since it may be appropriate to do so in certain situations.
Klasa Zend_Config
implementuje interfejsy Countable
oraz Iterator
w celu zapewnienia łatwego dostępu do danych
konfiguracyjnych. Dzięki temu można użyć funkcji
count()
oraz składni
PHP takiej jak foreach
na obiektach Zend_Config
.
Domyślnie dane konfiguracyjne dostępne poprzez Zend_Config
są tylko do odczytu, i próba przypisania (np., $config->database->host = 'example.com'
)
spowoduje wyrzucenie wyjątku. Te domyślne zachowanie może być zmienione
poprzez konstruktor, aby pozwolić na modyfikację wartości danych konfiguracyjnych.
Notatka | |
---|---|
Jest ważne, aby nie mylić modyfikacji danych konfiguracyjnych w pamięci z
zapisywaniem danych konfiguracyjnych do konkretnych środków przechowywania.
Narzędzia do tworzenia i modyfikowania danych konfiguracyjnych dla rożnych
środków przechowywania są poza zakresem klasy |
Klasy adapterów dziedziczą z klasy Zend_Config
więc wykorzystują
ich funkconalność.
Rodzina klas Zend_Config
pozwala na zorganizowanie danych
konfiguracyjnych w sekcje. Obiekty adapterów Zend_Config
mogą załadować jedną określoną sekcję, wiele określonych sekcji lub
wszystkie sekcje (gdy żadna nie jest określona).
Klasy adapterów Zend_Config
wspierają model pojedynczego dziedziczenia,
w którym jedna sekcja danych konfiguracyjnych może dziedziczyć z innej sekcji.
Jest to zapewnione w celu zredukowania lub wyeliminowania potrzeby
duplikowania danych konfiguracyjnych z różnych powodów. Sekcja dziedzicząca
może nadpisać wartości, które dziedziczy z sekcji rodzica. Tak jak w
dziedziczeniu klas PHP, sekcja może dziedziczyć z sekcji rodzica, która
może dziedziczyć z innej sekcji rodzica i tak dalej, ale wielokrotne
dziedziczenie (np., sekcja C dziedzicząca bezpośrednio z sekcji A oraz B)
nie jest obsługiwane.