Konfigurační soubor v PHP, tentokrát ve formátu .ini
V předešlém článku jsme si ukázali, jak vytvořit a zpracovat konfigurační soubor. Jako formát dokumentu jsme použili XML, především kvůli snadné čitelnosti pro uživatele a kvůli parseru, který máme v PHP k dispozici. Tentokrát si ukážeme další lehce interpretovatelnou syntaxi, která se ke tvorbě konfiguračních souborů přímo nabízí, všeobecně známý formát „.ini“.
Soubory s příponou .ini vám určitě nebudou neznámé. Původně šlo o textové konfigurační soubory operačních systémů Windows, postupně se ale tento formát pro svou jednoduchost rozšířil i do mnoha dalších programů a systémů. Pokud jste například někdy instalovali PHP, práci se souborem php.ini jste se vyhnuli asi jen ztěží. Je tedy celkem logické použít tento formát i pro vlastní konfigurační soubory. A PHP nám tuto práci nanejvýš usnadní.
Syntaxe .ini souborů
Než se podíváme, jaké možnosti nám PHP nabízí, je nutno si ujasnit syntaxi těchto souborů. Nepůjde o nic složitého. Konstanty a jejich hodnoty se definují jednoduše řádkem ve tvaru jmeno_konstanty = hodnota_konstanty
. Hodnota konstanty může nabývat různých typů. Nejčastěji jde o číslo nebo řetězec. Řetězec se musí dát do uvozovek, pokud obsahuje i jiné znaky než alfanumerické. Takže takto například nadefinuje konstantu osm
s číselnou hodnotou 8
a řetězcové konstanty jmeno
a tilda
s hodnotami Petr
a ~
:
osm = 8
jmeno = Petr
tilda = „~“
Syntaxe .ini souborů definuje také několik klíčových slov, konkrétně Off, False, No
jako logickou hodnotu 0 a On, True, Yes
jako logickou hodnotu 1. Pokud chcete definovat prázdný řetězec, můžete to udělat jednoduše vynecháním části za rovnítkem nebo dosazením posledního klíčového slova None
.
Komentáře jsou v .ini souborech dvojího druhu. Pokud řádek začíná středníkem, je celý ignorován. Druhým typem komentáře je nadpis sekce, který je uzavřen do hranatých závorek.
Nyní si uvedeme příklad kompletního .ini souboru:
;;;;;;;;;;;;;;;;;
;příklad .ini souboru
;;;;;;;;;;;;;;;;;
[prvni cast]
;pocet uzivatelu
number_of_users = 2
;kontroluj IP adresu
checkIP = No
[druha cast]
;tvoje jmeno
nick = Petr
prezdivka = None
Je samozřejmě vhodné uživateli tuto syntaxi alespoň lehce vysvětlit, ideální je k tomu rozsáhlejší komentář na začátku samotného souboru.
Parsování dokumentu v PHP
Když už jsme si ukázali, jak má vypadat .ini soubor, zbývá nám jej načíst a jednotlivé konstanty zaregistrovat. PHP nám nabízí přímo funkci parse_ini_file()
.
Kompletní hlavička funkce vypadá následovně: array parse_ini_file ( string filename [, bool process_sections])
. Jde tedy o funkci, která vrací asociativní pole (indexy pole jsou tvořeny názvem konstanty a obsah položky její hodnotou), respektive hodnotu FALSE
při nenalezení dokumentu zadaného argumentem filename
. Navíc funkce při chybě vypíše varování, proto je vhodné před ni psát operátor @
, který zobrazování chybových zpráv vypíná.
Kromě toho funkce parse_ini_file()
přijímá i druhý volitelný booleovský argument process_sections
. Je-li nastaven na false
(což je jeho standardní hodnota), funkce nijak nezpracovává nadpisy sekcí uvedené v hranatých závorkách. V opačném případě je výsledkem funkce vícerozměrné pole, kde první index je tvořen názvem sekce a druhý názvem konstanty. V tomto případě by pole po výpisu funkcí print_r()
vypadalo následovně:
Array
(
[prvni cast] => Array
(
[number_of_users] => 2
[checkIP] =>
)
[druha cast] => Array
(
[nick] => Petr
[prezdivka] =>
)
)
Konfigurační funkce
Podobně jako v předchozím článku se i nyní pokusíme vytvořit jednoduchou funkci, která automaticky zaregistruje všechna data načtená ze zadaného konfiguračního souboru jako konstanty a vrátí hodnotu TRUE
, resp. FALSE
v případě chyby. Zde je její výpis:
function config2($loc)
{
if (!($conf=@parse_ini_file($loc)))
{
return 0;
}
else
{
foreach($conf as $key => $value)
{
if (!defined($key))
{
define($key, $value);
}
}
return 1;
}
}
Tuto funkci asi není nutno příliš komentovat. Nejdříve načte pomocí popsaného parseru parse_ini_file()
obsah souboru zadaného jako argument $loc
do pole $conf
a pak pomocí cyklu foreach
zaregistruje jeho jednotlivé řádky jako konstanty.
XML nebo .INI?
V tomto a v předchozím článku jsme si ukázali dva přístupy k tvorbě konfiguračních souborů a funkcí, které je zpracovávají. Pro použití XML hovoří především jeho univerzálnost, lze jej zpracovávat i jinými prostředky, které jsou dostupné pro všechny XML aplikace, například XSLT. Oproti tomu syntaxe .ini je velmi jednoduchá, dobře čitelná a všeobecně známá. Ať už použijete kterýkoliv prostředek, nezapomínejte, že jde především o komfort uživatele, proto mu vše pořádně vysvětlete, aby se pro něj práce s vaším konfiguračním souborem nestala noční můrou.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Co je to VRAM a jak ji navýšit bez drahého upgradu?
20. srpna 2024 -
Proč investovat do nejvýkonnějších VPS s AMD EPYC procesory
14. června 2024 -
Doména .io v ohrožení: Co přinese předání Čagoských ostrovů?
10. října 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024