Nastavení komponenty z vlastního .neon-u
- Pavel Kravčík
- Člen | 1196
Záleží, co konkrétně chceš. Myslel jsem, že nějaké vlastní nastavení pro tu komponentu.
Osobně používám něco podobného. Iteruji nad všemi moduly (UzivatelModule,ArticleModule) a každý má vlastní config, kde je nastavení ACL, menu apod.
//boostrap.php
foreach(Finder() as $config)
{
$configurator->addConfig($config);
}
- Šaman
- Člen | 2666
Myslel jsem to takhle:
app/components/config.components.neon
includes:
- fooBar/config.neon
app/components/fooBar/config.neon
parameters:
param1: "foo"
param2: "bar"
services:
bar: NS\Bar
fooBar:
class: App\Components\IFooBarFactory(%param1%, %param2%)
setup:
- setFoo(@bar)
Výhoda je, že složitější konfiguraci máš společně s komponentou a
‚připojíš‘ ji jen includnutím jejího configu. Samozřejmě, že ji pak
máš definovanou všude…
Jestli to chápu, tak to jde o to, aby jsi v té mé ukázce neměl
%param%
a @bar
globálně dostupné? Pak asi opravdu
jen ručně si dekódovat její neon, třeba v konstruktoru. Zatím jsem se ale
nesetkal s potřebou některé služby a parametry skrývat. A pokud jde jen
o křížení názvů, tak to vyřeší prefixy.
Edit: Resp. parametry můžeš nastavit přímo a na tu službu
bar
si můžeš udělat továrničku (klidně i jen statickou) a
pomocí ní předat setupu jen nepojmenovanou instanci pomocí: (stejně jako se
vytváří třeba router)
services:
fooBar:
class: App\Components\IFooBarFactory("foo", "bar")
setup:
- setFoo(NS\Bar::create)
Editoval Šaman (24. 2. 2015 17:09)