DI a rozšíření třídy / vazby mezi třídami

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

Ahoj,

trochu jsem experimentoval s DI podle článku zde: https://pla.nette.org/…cy-injection. Zajímalo by mě, jak v tomto případě správně provést toto:

abstract class Base extends Nette\Object
{
  //stejné jako v článku
  //...
}
class User extends Base
{
  //stejné jako v článku
  //...
}
class SpecialUser extends User
{
  //něco vlastního
  //...
}

Pokud u třídy SpecialUser napíšu „extends User“, vyskočí na mě „Nette\DI\MissingServiceException: Multiple services of type Models\User found.“

Předem děkuju za jakoukoliv odpověď :)

enumag
Člen | 2118
+
0
-

Chovej se k těm třídám jako kdyby všechny měly být abstract nebo final. Tzn. User má být abstract a nemá být sám o sobě službou. Pokud potřebuješ dvě různé implementace tak jej podědíš 2× a oba potomky zaregistuješ jako služby.

Editoval enumag (3. 12. 2013 19:38)