Zend_Config_Ini.xml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <sect1 id="zend.config.adapters.ini">
  2. <title>Zend_Config_Ini</title>
  3. <para>
  4. <code>Zend_Config_Ini</code> pozwala programistom przechowywać dane
  5. konfiguracyjne w znanym formacie INI a następnie odczytywać je w aplikacji
  6. używając składni zagnieżdżonych właściwości obiektów. Format INI jest
  7. wyspecjalizowany aby zapewnić możliwość zachowania hierarchi danych
  8. konfiguracyjnych a także możliwość dziedziczenia pomiędzy sekcjami danych
  9. konfiguracyjnych. Hierarchia danych konfiguracyjnych jest uzyskiwana
  10. poprzez oddzielenie kluczy za pomocą znaku kropki (<code>.</code>).
  11. Sekcja może rozszerzać lub dziedziczyć z innej sekcji poprzez dodanie
  12. za nazwą sekcji znaku dwukropka (<code>:</code>) oraz nazwy sekcji,
  13. z której dane mają być dziedziczone.
  14. </para>
  15. <note>
  16. <title>parse_ini_file</title>
  17. <para>
  18. <code>Zend_Config_Ini</code> wykorzystuje funkcję PHP <ulink url="http://php.net/parse_ini_file"><code>parse_ini_file()</code></ulink>.
  19. Proszę przejrzyj dokumentację tej funkcji aby znać jej specyficzne zachowania,
  20. które dziedziczy <code>Zend_Config_Ini</code>, takie jak to w jaki sposób
  21. są obsługiwane specjalne wartości takie jak <code>true</code>, <code>false</code>,
  22. <code>yes</code>, <code>no</code>, oraz <code>null</code>.
  23. </para>
  24. </note>
  25. <note>
  26. <title>Separator kluczy</title>
  27. <para>
  28. Domyślnie separatorem kluczy jest znak kropki (<code>.</code>). Może
  29. on być jednak zmieniony przez zmianę klucza
  30. <code>'nestSeparator'</code> z tablicy <code>$options</code> podczas
  31. tworzenia obiektu <code>Zend_Config_Ini</code>. Na przykład:
  32. <programlisting role="php"><![CDATA[
  33. $options['nestSeparator'] = ':';
  34. $config = new Zend_Config_Ini('/path/to/config.ini',
  35. 'staging',
  36. $options);
  37. ]]>
  38. </programlisting>
  39. </para>
  40. </note>
  41. <example id="zend.config.adapters.ini.example.using">
  42. <title>Użycie Zend_Config_Ini</title>
  43. <para>
  44. Ten przykład pokazuje podstawowe użycie klasy <code>Zend_Config_Ini</code>
  45. do ładowania danych konfiguracyjnych z pliku INI. W tym przykładzie
  46. znajdują się dane konfiguracyjne zarówno dla systemu produkcyjnego
  47. jak i dla systemu rozbudowywanego. Z tego względu, że dane
  48. konfiguracyjne systemu rozbudowywanego są bardzo podobne do tych dla
  49. systemu produkcyjnego, sekcja systemu rozbudowywanego dziedziczy po
  50. sekcji systemu produkcyjnego. W tym przypadku decyzja jest dowolna
  51. i mogłoby to być zrobione odwrotnie, z sekcją systemu produkcyjnego
  52. dziedziczącą po sekcji systemu rozbudowywanego, chociaż nie może to
  53. być przykładem dla bardziej złożonych sytuacji. Załóżmy, że poniższe
  54. dane konfiguracyjne znajdują się w pliku <code>/path/to/config.ini</code>:
  55. </para>
  56. <programlisting role="ini"><![CDATA[
  57. ; Podstawowe dane konfiguracyjne
  58. [production]
  59. webhost = www.example.com
  60. database.adapter = pdo_mysql
  61. database.params.host = db.example.com
  62. database.params.username = dbuser
  63. database.params.password = secret
  64. database.params.dbname = dbname
  65. ; Konfiguracja aplikacji rozbudowywanej dziedziczy z podstawowej
  66. ; konfiguracji, a niektóre wartości są nadpisywane
  67. [staging : production]
  68. database.params.host = dev.example.com
  69. database.params.username = devuser
  70. database.params.password = devsecret
  71. ]]>
  72. </programlisting>
  73. <para>
  74. Następnie załóżmy, że programista aplikacji potrzebuje danych
  75. konfiguracyjnych aplikacji rozbudowywanej z pliku INI. Prostą 
  76. sprawą jest załadowanie tych danych określając plik INI oraz
  77. sekcję dla aplikacji rozbudowywanej:
  78. </para>
  79. <programlisting role="php"><![CDATA[
  80. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  81. echo $config->database->params->host; // wyświetla "dev.example.com"
  82. echo $config->database->params->dbname; // wyświetla "dbname"
  83. ]]>
  84. </programlisting>
  85. </example>
  86. <note>
  87. <table id="zend.config.adapters.ini.table">
  88. <title>Parametry konstruktora Zend_Config_Ini</title>
  89. <tgroup cols="2">
  90. <thead>
  91. <row>
  92. <entry>Parametr</entry>
  93. <entry>Opis</entry>
  94. </row>
  95. </thead>
  96. <tbody>
  97. <row>
  98. <entry><code>$filename</code></entry>
  99. <entry>Nazwa pliku INI do załadowania.</entry>
  100. </row>
  101. <row>
  102. <entry><code>$section</code></entry>
  103. <entry>
  104. Nazwa sekcji wewnątrz pliku ini, która ma być załadowana.
  105. Ustawienie wartości tego parametru na null spowoduje
  106. załadowanie wszystkich sekcji. Alternatywnie, możesz
  107. przekazać tablicę nazw sekcji aby załadować wiele sekcji.
  108. </entry>
  109. </row>
  110. <row>
  111. <entry><code>$options = false</code></entry>
  112. <entry>Tablica opcji. Obsługiwane są poniższe klucze:
  113. <itemizedlist>
  114. <listitem>
  115. <para>
  116. <emphasis>allowModifications</emphasis>:
  117. Ustaw na true aby umożliwić późniejszą
  118. modyfikację załadowanego pliku. Domyśłnie
  119. false
  120. </para>
  121. </listitem>
  122. <listitem>
  123. <para>
  124. <emphasis>nestSeparator</emphasis>:
  125. Ustaw znak jaki ma być użyty do oddzielania
  126. przestrzeni nazw. Domyślnie "."
  127. </para>
  128. </listitem>
  129. </itemizedlist>
  130. </entry>
  131. </row>
  132. </tbody>
  133. </tgroup>
  134. </table>
  135. </note>
  136. </sect1>