Globalizace objektu definovaného v bootstrap.php

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

Zdravím,

V rámci doctrine (ale to je fuk v rámci čeho) inicializuju novou instanci entity manageru ($em) v souboru bootstrap.php. Následně bych tento objekt rád předal do globálního povědomí celé aplikace.

Toto bych následně využíval tak, že bych mohl v metodě libovolného presenteru zavolat např.:

$this->em->...;

Nevíte někdo, jakým způsobem je toto realizovatelné, pokud vůbec?

Díky!

David Matějka
Moderator | 6445
+
0
-

ne a ani se o to nepokousej. vsude, kde em potrebujes, si ho injectni

kastanekdavid
Člen | 39
+
0
-

Umm, dobrá, díky :)

A jak jej tedy z bootstrapu definuji jako službu, jestli se můžu ptát?

David Matějka
Moderator | 6445
+
0
-

v bootstrapu ne, vsechny sluzby si definuj v neonu (prip. v compiler extension, ale to uz je komplikovanejsi). pro integraci doctrine pouzij treba kdyby/doctrine

greeny
Člen | 405
+
0
-

Ale když si to injectneš v BasePresenteru, tak to budeš mít dostupný ve všech :)

kastanekdavid
Člen | 39
+
0
-

Díky matej21 :) … kdyby/doctrine jsem zkoušel, ovšem přijde mi to dost overkill řešení, rád bych se obešel bez DAO a měl k dispozici klasickou variantu Doctrine s entitami a repositories.

greeny, to já samo vím, akorát řeším, jak vůbec dostat objekt $em do kontextu. Taky bych nejraději neinicializoval $em v bootstrapu, ale konstruktor třídy objektu $em vyžaduje parametry, které jsou dostupné pouze v bootstrapu. … Takže je to těžká vokurka :)

Editoval kastanekdavid (2. 4. 2014 20:06)

David Matějka
Moderator | 6445
+
0
-

nevymyslej znovu kolo, kdyby/doctrine ti vsechno nastavi tak, aby to bez problemu behalo pod nette, postara se o validni vytvareni proxy trid, spravne propoji doctrine cache s nette cache a v neposledni rade prida panel do debug baru.

query objecty pouzivat nemusis, entity dao jen extenduje entity repository z doctrine a pridava nejakou funkcnost

kastanekdavid
Člen | 39
+
0
-

Okok, dobře, tak znovu zinstaluju to kdyby/doctrine :) … Díky za názory, mistři!

mkoubik
Člen | 728
+
0
-

Jaké konkrétně parametry konstruktoru myslíš? Napiš si na to továrnu a tu si zaregistruj v neonu. Pokud entity manager ke svému vzniku potřebuje parametry které jsou dostupné jen v bootstrapu (jaké?) tak si je nastav jako parametry kontejneru.