Správa parameterů nad Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Martk
Člen | 661
+
0
-
Pavel Janda
Člen | 977
+
0
-

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

  1. 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…
  2. Je to celé hrozně velké.
  3. 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:

  1. 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ě:

  1. 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
+
0
-

@PavelJanda Díky za tento komentář.

  1. 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).
  2. 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.