1 <sect1 id="zend.config.adapters.ini">
2 <title>Zend_Config_Ini</title>
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.
16 <title>parse_ini_file</title>
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>.
26 <title>Separator kluczy</title>
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',
41 <example id="zend.config.adapters.ini.example.using">
42 <title>Użycie Zend_Config_Ini</title>
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>:
56 <programlisting role="ini"><![CDATA[
57 ; Podstawowe dane konfiguracyjne
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
66 ; Konfiguracja aplikacji rozbudowywanej dziedziczy z podstawowej
67 ; konfiguracji, a niektóre wartości są nadpisywane
68 [staging : production]
69 database.params.host = dev.example.com
70 database.params.username = devuser
71 database.params.password = devsecret
75 Następnie załóżmy, że programista aplikacji potrzebuje danych
76 konfiguracyjnych aplikacji rozbudowywanej z pliku INI. Prostą
77 sprawą jest załadowanie tych danych określając plik INI oraz
78 sekcję dla aplikacji rozbudowywanej:
80 <programlisting role="php"><![CDATA[
81 $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
83 echo $config->database->params->host; // wyświetla "dev.example.com"
84 echo $config->database->params->dbname; // wyświetla "dbname"
89 <table id="zend.config.adapters.ini.table">
90 <title>Parametry konstruktora Zend_Config_Ini</title>
94 <entry>Parametr</entry>
100 <entry><code>$filename</code></entry>
101 <entry>Nazwa pliku INI do załadowania.</entry>
104 <entry><code>$section</code></entry>
106 Nazwa sekcji wewnątrz pliku ini, która ma być załadowana.
107 Ustawienie wartości tego parametru na null spowoduje
108 załadowanie wszystkich sekcji. Alternatywnie, możesz
109 przekazać tablicę nazw sekcji aby załadować wiele sekcji.
113 <entry><code>$options = false</code></entry>
114 <entry>Tablica opcji. Obsługiwane są poniższe klucze:
118 <emphasis>allowModifications</emphasis>:
119 Ustaw na true aby umożliwić późniejszą
120 modyfikację załadowanego pliku. Domyśłnie
126 <emphasis>nestSeparator</emphasis>:
127 Ustaw znak jaki ma być użyty do oddzielania
128 przestrzeni nazw. Domyślnie "."