Správa parameterů nad Nette
- Pavel Janda
- Člen | 977
Rád bych vytkl několik věcí, které se mi nelíbí a jsou podle mého názoru v rozporu s tím, k čemu slouží parametry. :P
- Rád používáš ve svých rozšíření Traity. Jak bys použil toto rozšíření spolu s například … svým rozšířením Images? Nehledím na to, že to jde. Jde mi o princip, navádíš k tomu uživatele v readme…
- Je to celé hrozně velké.
- Značně se mi nelíbí
$parametersProvider->myVariable = 'new value';
. Změna parametrů, které jsou v configu? Brrr.
Čistě filozoficky; Já pokládám konfigurák (parametry aplikace) za
něco, co se má rychle naparsrovat, rychle předhodit službám a šmitec.
Pokud nějaká služba potřebuje dodatečný parametr, v sekci
services
jí ho předám. Taky používám podobnou službu, které
předám v configu všechny parametry
(@container::getParameters()
) a z ním to občas (!)
tahám. Ale:
- Umí si poradit s dědičností parametrů a kupodivu docela šikovně:
treba_neco:
defaultni:
franta : 8
pepa : 8
dalsi < default:
posledni < default:
franta: 4
A hlavně:
- Celá třída má všehovšudy 40 řádků
Ale jak jsem říkal, je to jen můj názor a rád si poslechnu nějaký opačný.
Editoval Pavel Janda (20. 11. 2015 23:28)
- Martk
- Člen | 661
@PavelJanda Díky za tento komentář.
- Buďto použijí přepsání metody na jiný název a trošku upravím nebo udělám ctrl + c a ctrl + v z traitu, trošku upravím a trait vůbec nepoužívám (tohle dělám, když není podpora traitů, v poslední době už ne).
- …
- Tohle jsem nejspíše nevysvětlil vůbec. V configu se inicializují
výchozí hodnoty proměnné (v configu se nic měnit nebude), které se
nejsnadněji přes bar importují do databáze (podpora Nette database a
Doctrine), při prvním získání se všechny parametry nahrají a provede se
cache. Při změně nějakého parametrů stačí provést
$provider->merge()
a všechny změněné parametry se nahrají do databáze (config zůstává při starém) a cache se vymaže. Když budu chtít přidat nové parametry, tak do configu přidám parametry, provedu import a nahrají se jen nové parametry. V baru se nachází veškerý seznam parametrů a jejich výchozích a současných hodnot.
Je tam trošku více funkcí, ale tohle byla hlavní myšlenka.
Vytvořil jsem si to hlavně z důvodu, že mám modulární aplikaci a strašně hodně configů s parametry a většinu (spíše všechny, ostatní si můžu dát do sekce parameters) těchto parametrů potřebuji měnit v administraci.