Nette 2.1 DI v extends class

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

Zdravim.

Dělám aplikaci ve které potřebuji ukládat poslední čas aktivity přihlášeného uživatele (kvůli statistice).

Jak bych na to šel?
Udělal bych si proto SecuredPresenter, který dědí od BasePresenter.

V SecuredPresenter kontroluji zda je uživatel přihlášen (pokud není přesměruji na přihlášení), pokud je přihlášen nastavím s každým načtením do DB uživateli čas poslední aktivity.

Ale jak dostat do SecuredPresenter přístup do DB (konkrétně tabulky user)?

Když budu v SecuredPresenter mít svůj constructor, přes který budu DI $userRepository, budu muset ve všech presenterech ve kterých budu mít odděděno od SecuredPresenter přetížený construcotor pro DI volat rodiče:
parent::__construct( $userRepository );

Trochu se v tom ztrácím…

Jak to vyřešit?
Aby se mi do SecuredPresenter dostal $userRepository a nemusel jsem se o to v Presenteru, který dědí od SecuredPresenter vůbec starat.

enumag
Člen | 2118
+
0
-

Hledáš inject* metody a/nebo @inject anotace. Např.

/**
 * @var UserRepository
 * @inject
 */
public $userRepository;
Filip Procházka
Moderator | 4668
+
0
-

Abys pochopil proč se v presenterech a pouze v nich nepreferuje používání constructor injection, přečti si tenhle příspěvek :)

RSS tématu Téma zavřeno