| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <sect1 id="zend.config.theory_of_operation">
- <title>Zasady działania</title>
- <para>
- Dane konfiguracyjne są przekazywane do konstruktora <code>Zend_Config</code>
- 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
- <code>Zend_Config</code>. Skrypt użytkownika może przekazać taką tablicę
- bezpośrednio do konstruktora <code>Zend_Config</code>, nie używając klasy
- adaptera, since it may be appropriate to do so in certain situations.
- </para>
- <para>
- Each configuration data array value becomes a property of the
- <code>Zend_Config</code> object. The key is used as the property name.
- If a value is itself an array, then the resulting object property is
- created as a new <code>Zend_Config</code> object, loaded with the array
- data. This occurs recursively, such that a hierarchy of configuration
- data may be created with any number of levels.
- </para>
- <para>
- Klasa <code>Zend_Config</code> implementuje interfejsy <code>Countable</code>
- oraz <code>Iterator</code> w celu zapewnienia łatwego dostępu do danych
- konfiguracyjnych. Dzięki temu można użyć funkcji
- <ulink url="http://php.net/count"><code>count()</code></ulink> oraz składni
- PHP takiej jak <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
- na obiektach <code>Zend_Config</code>.
- </para>
- <para>
- Domyślnie dane konfiguracyjne dostępne poprzez <code>Zend_Config</code>
- są tylko do odczytu, i próba przypisania (np., <code>$config->database->host = 'example.com'</code>)
- spowoduje wyrzucenie wyjątku. Te domyślne zachowanie może być zmienione
- poprzez konstruktor, aby pozwolić na modyfikację wartości danych konfiguracyjnych.
- Dodatkowo, jeśli modyfikacje są dozwolone, klasa <code>Zend_Config</code>
- obsługuje usuwanie wartości danych konfiguracyjnych
- (np. <code>unset($config->database->host);</code>).
- <note>
- <para>
- 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 <code>Zend_Config</code>.
- Są dostępne zewnętrzne rozwiązania open source służące do
- tworzenia oraz modyfikowania danych konfiguracyjnych dla różnych
- środków przechowywania.
- </para>
- </note>
- </para>
- <para>
- Klasy adapterów dziedziczą z klasy <code>Zend_Config</code> więc wykorzystują
- ich funkconalność.
- </para>
- <para>
- Rodzina klas <code>Zend_Config</code> pozwala na zorganizowanie danych
- konfiguracyjnych w sekcje. Obiekty adapterów <code>Zend_Config</code>
- mogą załadować jedną określoną sekcję, wiele określonych sekcji lub
- wszystkie sekcje (gdy żadna nie jest określona).
- </para>
- <para>
- Klasy adapterów <code>Zend_Config</code> 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.
- </para>
- <para>
- Jeśli masz dwa obiekty <code>Zend_Config</code>, możesz je połączyć w
- jeden pojedynczy obiekt używając metody <code>merge()</code>.
- Na przykład, mając obiekt $config oraz $localConfig, możesz dołączyć
- obiekt $localConfig do $config używając metody
- <code>$config->merge($localConfig);</code>. Dane z obiektu $localConfig
- nadpiszą dane o tej samej nazwie znajdujące się w obiekcie $config.
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|