Konfigurácia v php rubrika: Programování: PHP
Ahojte,
v php programujem už dosť dlho, ale zatial idem svojou vlastnou cestou - vlastný mini framework (DI, testy) a na ňom postavené CMS. Teda nepoužívam žiadne velké frameworky (Nette/Symfony).
V nich len raz čas čítam zdrojáky, aby som zistil ako vyriešili danú situáciu.
Snažím sa vyriešiť toto:
- rôzne knižnice majú ako parametre konštruktora konfiguráciu.
- napr. DB má server/login/pass/dbname, Cache má cestu do temp adresára atď...
Problém je že tieto knižnice môžu mať rozdielne parametre:
- MySQL databáza má vyššie popísané, SQLite databáza má ako parameter len cestu.
- súborová cache má ako parameter cestu, Memcached cache má ako parametre server a port...
A teraz, ak chcem v projekte zmeniť základnú súborovú cache za Memcached, musím prejsť kód a na jednom, dvoch miestach upraviť parametre konštruktora.
Jediné čo ma napadlo je dávať ako parameter konštruktora celú konfiguráciu
$cache = new Cache($config->GetSection('cache')); // GetSection() vráti array('host' => '127.0.0.1', 'port' => 11211)
Podobne by sa to dalo spraviť pre databázu a ostatné objekty.
Toto sa mi ale nezdalo velmi "čisté". Keď som pozeral ako to majú iné frameworky (myslel som že to bude velmi podobne), bol som prekvapený že takmer všade to bolo cez parametre konštruktora:
- https://api.nette.org/3.0/Nette/Database/Connection.html#method___construct
- https://api.nette.org/3.0/Nette/Caching/Storages/MemcachedStorage.html#method___construct
Neverím že v týchto frameworkoch keď chce človek vymeniť jeden typ cache/databázy za iný s rôznymi parametrami musí meniť kód frameworku, alebo prepisovať svoj kód na X miestach.
Ako toto robíte vy, prípadne je riešenie s objektom ok?
Zkuste juknout na tohle:
https://www.yiiframework.com/doc/guide/2.0/en/db-dao#creating-db-connect...
https://www.yiiframework.com/doc/guide/2.0/en/caching-data#cache-components
https://github.com/yiisoft/yii2-app-advanced/blob/master/frontend/config...
Osobně s tímhle nemám problém a mám konfiguraci na jednom místě. Respektive mám zvlášť konfiguráky pro DB/Cache/Logy ..., které se pak načítají v jenom velkém konfiguráku.
Pro zobrazení všech 6 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře