Vychozí nastavení inject pro služby

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

Zdravím,
jak lze změnit výchozí nastavení inject v configu z no/false na yes/true u služeb?
Vím, že to jde přes CompilerExtension, kde natvrdo projdu všechny definice a nastavím inject. Ale tím pak už to v configu nezměním u některých služeb zpět na „no“, pokud by bylo potřeba.
Lze nějak docílit, abych měl pořád možnost v configu inject vypnout?

mkoubik
Člen | 728
+
0
-

Máš nějaký závažný důvod proč u vlastních služeb nepoužívat konstruktor? Podle mě je to nejpohodlnější cesta.

Šaman
Člen | 2640
+
0
-

Já ano. Občas potřebuji do všech komponent dostat nějakou závislost, naposledu když jsem zkoušel psát komponentu bez použití $this->presenter->… a chtěl jsem AJAX, tak jsem potřeboval injectovat Request. V base komponentě. Zjistil jsem, že buď se nevyhnu tupému předávání parametrů parent konstruktoru, nebo si musím vynutit injectování, nebo jsem se na to vyprd a prostě používám ošklivý $this->presenter…

Mimochodem argument, který platil při vytvoření inject metod, tedy že presentery jsou opuchlé hromádky kódu s mnoha závislostmi už taky neplatí. Aktuálně má Nette\..\Presenter jedinou závislost. Tak proč se u něj toleruje i velmi nepěkná property injection a všude jinde se i method injection démonizuje?