Multiple services of type Nette\Security\IUserStorage

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

Zdravím chtěl jsem si vytvořit vlastní třídu Nette\Security\IUserStorage. Jeneže když ji zaregistruji do configu tak to začne vyhazovat chybu (viz. titulek). Chápu, že se to bije s defaultní třídou, kterou si nette vytváří samo. Doufal jsem, že nette configurátor funguje tak, že se podívá, zda není registrovaná služba typu Nette\Security\IUserStorage a pakliže není tak vytvoří defualtní, ale pokud je tak použije tu kterou vytvořil uživatel. To by mi přišlo logické, ale tak to bohužel nefunguje a já nevím jak to teď obejít. Díky

ali
Člen | 342
+
+2
-

Nahrad defaultne vytvareny service

services:
	security.userStorage:
		class: App\Model\UserStorage
		arguments: [...]
joseff
Člen | 233
+
0
-

Díky, škoda jen, že to nefunguje jak jsem popisoval… bylo by to o dost pohodlnější

David Grudl
Nette Core | 8239
+
0
-

@joseff Něco takového se plánuje https://github.com/…e/di/pull/84

David Matějka
Moderator | 6445
+
0
-

@DavidGrudl v tomhle pripade to asi nepomuze, obe sluzby implementuji ten IUserStorage, ktery se vsude vyzaduje, takze nette stejne nerozpozna vyssi prioritu vlastni sluzby (leda ze bys oznacil vsechny nette sluzby jako autowired: false)

enumag
Člen | 2118
+
0
-

@DavidGrudl Ten PR s tím nemá co dělat, zato můj komentář ano.

David Grudl
Nette Core | 8239
+
0
-

Je to stále jen otázka autowiringu a priorit.

Zax
Člen | 370
+
+1
-

Podle mě by bylo hezké mít v Nette nějaký interface-implementation binding.

services:
  Nette\Security\IStorage: App\Model\UserStorage
  - Nette\Http\UserStorage
  - My\Other\Storage

Všude kde chci IStorage → předá se App\Model\UserStorage. Ostatní storage se dál budou autowirovat, ale jen přes konkrétní třídu, ne přes interface. Config by byl autorita, 3rd-party rozšíření mi nemá co kecat do toho co se kde bude autowirovat (resp. vlastní interfacy ať si drátují jak chtějí, to je mi z lidského hlediska šumák, ale služby jako Security\IStorage bych rád měl plně pod kontrolou).

Nestálo by to za zvážení?