Jak si poslat do služby kompletní sekci parameters

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

Chtěl bych si poslat do služby všechny parametry z konfigu:

- MyConfig(%%)

---Fungovalo to, v nové verzi to nefunguje--- edit bullshit, nikdy to nefungovalo, jen mi to nehodilo chybu sorry. Je nějaký lepší způsob než zavést Container jako službu a volat na něm getParameters()?

Editoval jasir (24. 6. 2013 12:27)

enumag
Člen | 2118
+
0
-

Jasně, napiš si extension, dej každé službě jen to co potřebuje a zruš sekci parameters. ;-)

Jan Tvrdík
Nette guru | 2595
+
0
-

@jasir: Můžu se zeptat, kdy něco takového fungovalo?

jasir
Člen | 746
+
0
-

enumag napsal(a):

Jasně, napiš si extension, dej každé službě jen to co potřebuje a zruš sekci parameters. ;-)

Nechce se mi vysvětlovat, proč to teď tak nechci, časem se k tomu dostanu, ale teď prostě potřebuju dostat jednu vrstvu abstrakce nad parameters.

jasir
Člen | 746
+
0
-

Jan Tvrdík napsal(a):

@jasir: Můžu se zeptat, kdy něco takového fungovalo?

Sorry, nikdy, to byl jenom můj pocit ;-)

Filip Procházka
Moderator | 4668
+
0
-

Vždycky je lepší předávat jen to co je potřeba.


Důrazně nedoporučuji, ale nejsnadnější cesta by měla být tato:

services:
	class: MyConfig(@container)
class MyConfig
{
	public $parameters;

	public function __construct($container)
	{
		$this->parameters = $container->parameters;
	}

}
jasir
Člen | 746
+
0
-

Díky, udělal jsem to podobně, akorát takto, abych na tom containeru byl závislej jen v konfiguraci.

neonParametersRepository:
   class: ConfigurationModule\Model\ArrayConfigRepository(@container::getParameters())

FYI, dělám proto, že měním aplikaci tak, aby byla konfigurovatelná přes UI a konfig byl uložen v db.
Jako mezikrok jsem zavedl Config (a Repozitáře)jako službu. Tato služba si bere nastavení jak z neonu, tak z databáze. Také umožnuje save().