2
0

Zend_Config-TheoryOfOperation.xml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <sect1 id="zend.config.theory_of_operation">
  2. <title>Zasady działania</title>
  3. <para>
  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.
  12. </para>
  13. <para>
  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.
  20. </para>
  21. <para>
  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>.
  28. </para>
  29. <para>
  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>).
  37. <note>
  38. <para>
  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.
  46. </para>
  47. </note>
  48. </para>
  49. <para>
  50. Klasy adapterów dziedziczą z klasy <code>Zend_Config</code> więc wykorzystują
  51. ich funkconalność.
  52. </para>
  53. <para>
  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).
  58. </para>
  59. <para>
  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)
  68. nie jest obsługiwane.
  69. </para>
  70. <para>
  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.
  77. </para>
  78. </sect1>
  79. <!--
  80. vim:se ts=4 sw=4 et:
  81. -->