1 <sect1 id="zend.config.theory_of_operation">
2 <title>Zasady działania</title>
4 Dane konfiguracyjne są przekazywane do konstruktora <code>Zend_Config</code>
5 w postaci asocjacyjnej tablicy, która może być wielowymiarowa, po to, aby
6 obsłużyć dane zorganizowane w różny sposób, od prostych po specyficzne.
7 Konkretny adapter posiada funkcjonalność przystosowującą przechowywane dane
8 konfiguracyjne do wygenerowania tablicy asocjacyjnej dla konstruktora
9 <code>Zend_Config</code>. Skrypt użytkownika może przekazać taką tablicę
10 bezpośrednio do konstruktora <code>Zend_Config</code>, nie używając klasy
11 adaptera, since it may be appropriate to do so in certain situations.
14 Each configuration data array value becomes a property of the
15 <code>Zend_Config</code> object. The key is used as the property name.
16 If a value is itself an array, then the resulting object property is
17 created as a new <code>Zend_Config</code> object, loaded with the array
18 data. This occurs recursively, such that a hierarchy of configuration
19 data may be created with any number of levels.
22 Klasa <code>Zend_Config</code> implementuje interfejsy <code>Countable</code>
23 oraz <code>Iterator</code> w celu zapewnienia łatwego dostępu do danych
24 konfiguracyjnych. Dzięki temu można użyć funkcji
25 <ulink url="http://php.net/count"><code>count()</code></ulink> oraz składni
26 PHP takiej jak <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
27 na obiektach <code>Zend_Config</code>.
30 Domyślnie dane konfiguracyjne dostępne poprzez <code>Zend_Config</code>
31 są tylko do odczytu, i próba przypisania (np., <code>$config->database->host = 'example.com'</code>)
32 spowoduje wyrzucenie wyjątku. Te domyślne zachowanie może być zmienione
33 poprzez konstruktor, aby pozwolić na modyfikację wartości danych konfiguracyjnych.
34 Dodatkowo, jeśli modyfikacje są dozwolone, klasa <code>Zend_Config</code>
35 obsługuje usuwanie wartości danych konfiguracyjnych
36 (np. <code>unset($config->database->host);</code>).
39 Jest ważne, aby nie mylić modyfikacji danych konfiguracyjnych w pamięci z
40 zapisywaniem danych konfiguracyjnych do konkretnych środków przechowywania.
41 Narzędzia do tworzenia i modyfikowania danych konfiguracyjnych dla rożnych
42 środków przechowywania są poza zakresem klasy <code>Zend_Config</code>.
43 Są dostępne zewnętrzne rozwiązania open source służące do
44 tworzenia oraz modyfikowania danych konfiguracyjnych dla różnych
45 środków przechowywania.
50 Klasy adapterów dziedziczą z klasy <code>Zend_Config</code> więc wykorzystują
54 Rodzina klas <code>Zend_Config</code> pozwala na zorganizowanie danych
55 konfiguracyjnych w sekcje. Obiekty adapterów <code>Zend_Config</code>
56 mogą załadować jedną określoną sekcję, wiele określonych sekcji lub
57 wszystkie sekcje (gdy żadna nie jest określona).
60 Klasy adapterów <code>Zend_Config</code> wspierają model pojedynczego dziedziczenia,
61 w którym jedna sekcja danych konfiguracyjnych może dziedziczyć z innej sekcji.
62 Jest to zapewnione w celu zredukowania lub wyeliminowania potrzeby
63 duplikowania danych konfiguracyjnych z różnych powodów. Sekcja dziedzicząca
64 może nadpisać wartości, które dziedziczy z sekcji rodzica. Tak jak w
65 dziedziczeniu klas PHP, sekcja może dziedziczyć z sekcji rodzica, która
66 może dziedziczyć z innej sekcji rodzica i tak dalej, ale wielokrotne
67 dziedziczenie (np., sekcja C dziedzicząca bezpośrednio z sekcji A oraz B)
71 Jeśli masz dwa obiekty <code>Zend_Config</code>, możesz je połączyć w
72 jeden pojedynczy obiekt używając metody <code>merge()</code>.
73 Na przykład, mając obiekt $config oraz $localConfig, możesz dołączyć
74 obiekt $localConfig do $config używając metody
75 <code>$config->merge($localConfig);</code>. Dane z obiektu $localConfig
76 nadpiszą dane o tej samej nazwie znajdujące się w obiekcie $config.