5.2. Zasady działania

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] 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 Zend_Config. Są dostępne zewnętrzne rozwiązania open source służące do tworzenia oraz modyfikowania danych konfiguracyjnych dla różnych środków przechowywania.

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.