Autowiring parametrů pomocí … – kolik je těch teček potřeba?

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

Mám

class A {
   __construct(B $b, C c$, $options) {...}
}

Myslel jsem, že definici v neonu stačí takto (k vypuštění obou parametrů jen jedna trojtečka)

parameters:
	options: [1,2,3]
services:
   sluzba:
	class: A(..., %options%)

ale funguje jen toto – dvakrát trojtečka, za každý parametr jedna:

parameters:
	options: [1,2,3]
services:
   sluzba:
	class: A(..., ..., %options%)

Krk bych za to dal, že mi to dřív fungovalo. Nevíte, změnilo se něco?

Majkl578
Moderator | 1364
+
0
-

Ta druhá varianta je srozumitelná a logická, první nikoliv. Osobně bych 1. považoval za chybné chování.

Alternativně by myslím mělo jít i něco takového:

sluzba:
	class: A
	arguments:
		2: %options%
jasir
Člen | 746
+
0
-

Čili to byl jen můj pocit že to dřív fungovalo. Štve mě to, protože pokud přidám další parametr do konstruktoru, který by mohl být autowired, musím to změnit i v configu (a v mém konkrétním případě na x místech).

A bájdvej, i ta první je srozumitelná a logická. „Doplň všechno, kromě posledního“, jinak se to prostě interpretovat nedá.

Editoval jasir (30. 10. 2012 16:26)

Filip Procházka
Moderator | 4668
+
0
-

Já to řeším tak, že ty které musím specifikovat ručně (nejednoznačné), tak dávám na začátek a ty co jdou doplnit automaticky, tak na konec :)

jasir
Člen | 746
+
0
-

A pak už není potřeba „počet trojček ~ počtu argumentů?“

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

Není, autowirované na konci seznamu parametrů není třeba tečkovat.

jasir
Člen | 746
+
0
-

Skvělý, dík!