Config

Snad jednou z prvních věcí, kterou je třeba udělat při tvorbě nové aplikace, je její konfigurace. Díky třídě Config se nejedná o žádnou záludnou činnost a při přechodu na produkční server vás již nečekají žádné změny.

Každá konfigurační hodnota je označena klíčem. Pomocí tohoto klíče se pak k ní dostanete kdykoliv. Klíč se může skládat z několika uzlů, kdy jednotlivé uzly jsou odděleny tečkou. Můžete tak konfiguraci zapisovat/číst po jednotlivých uzlech.

Config::write('session', array(
    'lifeTime' => 60*60,
    'name' => 'app-session-id'
));

// je shodné s

Config::write('session.lifeTime', 60*60);
Config::write('session.name', 'app-session-id');

A stejně tak čtení

$config = Config::read('session');
$config['lifeTime'] = Config::read('session.lifeTime');

Názvy klíčů nejsou citlivé na velikost písmen. Můžete tak používat způsob, jaký vám více vyhovuje.

Metoda Config::read() obsahuje ještě druhý volitelný parametr – výchozí hodnotu. Může se stát, že konfigurační klíč není definován. Pak metoda read() vrátí druhý volitelný parametr.

$appVersion = Config::read('app.version', 'undefined');

Multi-serverová konfigurace

Snad u každé aplikace nastává situace, kdy je aplikace vyvíjena jinde, než kde bude ve finále „běžet“. Proto je také nutné nakonfigurovat aplikaci pro každý server zvlášť. Háefko pak použije „aktuální“ konfiguraci, ostatní ignoruje.

Jednolité konfigurace se zapisují vztažmo k doméně, na které aplikace bude běžet. Tedy nadefinuji si například konfigurace pro localhost a pak pro server example.com. Celé pole konfigurace pak musí být obsaženo v klíči servers, které nemůže být spojen se svými podklíči!

Config::write('servers', array(
    'localhost' => array('config.debug' => 2),
    'example.com' => array('config.debug' => 0)
));

Vícenásobný zápis

Pokud konfiguraci máte uloženou v polí, pak ji jednoduše můžete nechat zapsat pomocí metody Config::multiWrite().

$config = array(
    'core.debug' => 2
    'session.name' => 'app'
);

Config::multiWrite($config);

Konfigurace pomocí externího souboru

Háefko nabízí také možnost konfigurace pomocí externího souboru. Tento soubor má syntaxi velmi podobnou YAMLu.

Session.name: my-app
Core.debug: 2
Db.connection:
    driver: mysqli
    database: test

S multi-serverovou konfigurací:

mykey: 'value with space on the end   '
session.name: my-app
servers:
    localhost:
        core.debug: 2
        db.connection:
            driver: mysqli
            database: test
            username: root
            password: heslo
    example.com:
        db.connection:
            database: example_com
            username: useX2