instance modelu je k dispozici po celou dobu běhu aplikace?

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

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é:

  1. znamená to, že instance třídy Otakunote\Model bude k dispozici po celou dobu běhu aplikace?
  2. 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
+
0
-

Ahoj,

  1. 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
  2. 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)

Neas
Člen | 43
+
0
-

Takže bych měl mít v neonu připraveny všechny modely?

nanuqcz
Člen | 822
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

vafliik
Člen | 4
+
0
-

Aha. Díky moc, občas potřebuju trošku popostrčit :)