Dodatečná konfigurace CompilerExtension – závislost na jménu rozšíření

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

Zdravím,
Mám CompilerExtension, která načítá služby z konfiguračního souboru (Compiler::parseServices). Pokud chci tyto služby umístit do sub-containeru podle toho, pod jakým jménem je extension načtena, použiji parametr namespace metody parseServices. Problém ale nastane, pokud chci službám z konfiguráku předat další služby (@service). Ke službám v sub-containeru se totiž nemůžu dostat bez toho, abych znal jméno rozšíření (např. @blog.service).
Jde se tohoto nějak zbavit? Je nesmysl uvádět v konfiguraci jméno rozšíření, které může být vpodstatě jakékoliv. Jediné řešení, o kterém vím, je přidávat služby přímo v PHP…

Editoval Teyras (24. 9. 2012 22:57)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

O jaké rozšíření by konkrétně mělo jít?

Teyras
Člen | 81
+
0
-

Ono to je docela obecný… :)
Můžeš použít třeba to z tohohle příkladu. Tam je zrovna vidět, že musíš uvádět předponu blog, takže musíš rozšíření zaregistrovat takhle

$compiler->addExtension('blog', new MyBlogExtension)

Když jméno z ‚blog‘ změníš třeba na ‚myblog‘, povede to k chybám. Částečně to řeší právě parametr namespace téhle metody. Jenže už neřeší prefix předáváných služeb (@blog.articles atd).

Editoval Teyras (24. 9. 2012 23:22)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Myslel jsem, jaké rozšíření tvoříš ty :).

Filip Procházka
Moderator | 4668
+
0
-

Použij autowire.