Multiple services of type Nette\Security\IUserStorage
- joseff
- Člen | 233
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
- David Matějka
- Moderator | 6445
@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)
- Zax
- Člen | 370
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í?