instance modelu je k dispozici po celou dobu běhu aplikace?
- Neas
- Člen | 43
Ahoj.
Mám v neonu:
database:
class: Nette\Database\Connection
arguments: ['mysql:host=localhost;dbname=otakunote', 'root', '']
model:
class: Otakunote\Model
arguments: [@database]
a chtěl bych se jen zeptat na pár věcí, které mi nejsou ještě úplně jasné:
- znamená to, že instance třídy Otakunote\Model bude k dispozici po celou dobu běhu aplikace?
- pokud ano, chtěl bych se zeptat, jak se mohu dostat k připojení k databázi, pokud se na ni potřebuju dostat z jiné třídy, než z Modelu (konkrétně mám na mysli Authenticator).
Děkuji
- nanuqcz
- Člen | 822
Ahoj,
- Instance se v containeru vytváří při jejím prvním použití (při
prvním zavolání
$this->context->nejakyModel
) a od té doby je zde vytvořena po celou dobu běhu aplikace - V presenteru
$this->context->database // nebo $this->getService('database');
do Authenticatoru musíš připojení k databázi nějak předat (například v konstruktoru).
EDIT: jako příklad na ten Authenticator se můžeš podívat třeba tady ;-)
Editoval xxxObiWan (8. 1. 2012 0:34)
- nanuqcz
- Člen | 822
Ano, tak by to mělo být správně.
Nebo můžeš použít nějaký model
loader (pokud ti to nebude fungovat, bude asi potřeba upravit
config.neon
podle nedávných
novinek v configuratoru)
Editoval xxxObiWan (8. 1. 2012 16:58)
- vafliik
- Člen | 4
xxxObiWan napsal(a):
Ano, tak by to mělo být správně.
Nebo můžeš použít nějaký model loader (pokud ti to nebude fungovat, bude asi potřeba upravit
config.neon
podle nedávných novinek v configuratoru)
A nešlo by používat nějaký BaseModel, který by obstarával připojení k databázi (a byl definován v neon konfiguraci) a ostatní modely udělat jako potomky tohoto BaseModelu?
(omlouvám se za laický a dost možná naivní pohled, problematika modelů a služeb mi zatím není úplně jasná. Vycházím z příkladu „Návštěvní knihy“, kde byla taky použita dědičnost základního modelu, který obstarával připojení k db…)
- Nox
- Člen | 378
vafliik napsal(a):
A nešlo by používat nějaký BaseModel, který by obstarával připojení k databázi (a byl definován v neon konfiguraci) a ostatní modely udělat jako potomky tohoto BaseModelu?
Však máš https://pla.nette.org/…cy-injection#… , ne?
Jinak „base“ třídy si klidně používej, dokud bude platit, že potomek je nějaká specializace bázové třídy a ne jen něco co se momentálně chová podobně (atp.)
- nanuqcz
- Člen | 822
vafliik napsal(a):
A nešlo by používat nějaký BaseModel, který by obstarával připojení k databázi (a byl definován v neon konfiguraci) a ostatní modely udělat jako potomky tohoto BaseModelu?
I tak bys ty ostatní modely musel mít definované v config.neon ;-) To, že mají společného předka, zrovna na tohle nemá žádný vliv.