Dynamické závislosti služeb

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

Zdravím,
řeším takovou obligátní věc: jak nejlépe řešit situace, kdy má mít služba nějaké závislosti, které ale nemá napevno definované, neví o nich.
Např. mám router, ale chci, aby mohla nějaká jiná služba (říkejme jí třeba A) přidat routu bez toho, aniž by se měnil zdroják samotného routeru.
Nabízí se samozřejmě to, že „A“ bude mít jako závislost ten router. Tady je ale zakopaný pes v tom, že se služby iniciují až ve chvíli, kdy jsou explicitně potřeba. Tudíž se „A“ vůbec nevytvoří a neupraví router.

Poněkud kostrbaté, ale funkční řešení, je „A“ nuceně vyžadovat (a díky tomu i vytvořit) třeba projitím AutoLoaderu, ale to mi nepřijde moc pěkné.

Jak byste toto řešili? Nebo je to porušení nějaké objektové zásady?

mkoubik
Člen | 728
+
+1
-

Sestavuj si ten router v compiler extension pomocí addSetup() a služby které ho nějak konfigurují si označ pomocí tagů.

vasam
Člen | 26
+
0
-

mkoubik: To zní celkem dobře. Díky za tip.