Používání proměnných v Zend_Config
V našich PHP projektech s úspěchem používáme Zend Framework a také jeho část Zend_Config.
Zend_Config
je třída umožňující přístup
k konfiguračním souborům. Do něj je vhodné ukládat si například
nastavení databáze apod. V současnosti existují dvě implementaci
(adaptéry):
- Zend_Config_ini
- Slouží pro práci s konfiguračními daty, která jsou uložena a php ini souboru.
- Zend_Config_Xml
- Slouží pro práci s konfiguračními daty, která jsou uložena XML souboru.
Současná implementace Zend_Config neumožňuje používat proměnné v konfiguračních souborech. Na příkladu vysvětlím o čem je řeč:
[default]
foo = bar
foo2 = #foo#
var = World
foo3 = "Hello #var#"
Výše uvedený kód je ukázkou ini souboru, ktery lze načíst pomocí
Zend_Config_Ini
třídy. Použítí jenásledující
$config = new Zend_Config_Ini('config.ini', 'default');
$el = new Venturia_Config_ElEvaluator($config);
echo $config->foo; // vypíše bar
echo $config->foo2; // vypíše #foo#
echo $el->evaluate($config->foo2); // vypíše bar
echo $config->foo3; // vypíše Hello #var#
echo $el->evaluate($config->foo3); // vypíše Hello World
Třídy Venturia_Config_ElEvaluator
tedy funguje tak, že
projde daný string a zamění výskyty znaku #nazev_promenne#
za
její skutečnou hodnotu (dělá to rekurzivně).
K napsání této třídy mě vedla skutečnost, že se hodnoty různých proměnných opakovaly. Typicky to byla hodnota e-mailové adresy.
Závěr
Doufám, že tato triviální třída může někomu pomoci s lepším uspořádám jeho konfiguračních souborů. Dříve než jsem se do jejího psaní pustil pátral jsem po webu, ale nic podobného jsem nenašel…no možná mě vyvedete z omylu.
Zde je odkaz na stažení třídy a testů – Venturia_Config_ElEvaluator + testy.
Celý článek 1 komentář 9. October 2007