Zistenie nazvu suboru kde je trieda deklarovana

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

Ahoj,

je nejaky sposob ako zistit, v ktorom subore je deklarovana nejaka trieda? Resp. mam nasledovnu situaciu:

Mam abstraktny objekt A, ktory vytvara urcite meta informacie o objekte (v principe sebe samom – o svojom potomkovi), ktore berie z anotacii. Kedze anotacie sa casto nemenia, je vhodne tieto meta informacie kesovat a neparsovat ich zakazdym znovu.

Na expiraciu kese chcem pouzit vyexpirovanie podla zmeny suboru, tzn. ked dojde k zmene suboru, kde je trieda (potomok objektu A) definovana, je mozne, ze doslo k zmene anotacii a treba znovu vybudovat meta informacie.

Ako vsak mozem, z objektu A zistit, kde je deklarovana napr trieda B, ktora dedi od A. Mam za to, ze nejaky robotLoader z nette by mohol pomoct, ale neviem kde, resp. co mam hladat.

Dakujem za akykolvek help!

norbe
Backer | 405
+
0
-

Můžeš zneužit např. RobotLoaderu.

David Grudl
Nette Core | 8228
+
0
-

ClassReflection::from(‚Trida‘)->getFileName()

westrem
Člen | 398
+
0
-

norbe napsal

Dekuji za reakci, tohle vlakno sem si matne pamatoval a nevedel som ho dohladat

David Grudl napsal

Tohle je bozi!! Presne to som hladal, kedze robim s reflexiou, len mam na locale este APIcko k 0.9.5 a tam mi ta metoda (kedze je dedena) unikla. Mockrat dekuju!!

marek.dusek
Člen | 99
+
0
-

Možná OT, ale máš nějak změřená, jak drahé je přečtení anotací vs. získání metainformací o souboru?

westrem
Člen | 398
+
0
-

Co rozumies pod pojmom metainformace o souboru ?

Ja mmtalne co robim, je obecny abstract ConfigurableObject, od ktoreho mozes dedit a pri predani parametrov v konstruktore sa dokaze sam spravne nakonfigurovat (vyuzivam to potom pri DB entitach, ktore ziskavam pomocou dibi).

V mojom pripade meta informacie === anotacie u properties, tzn. nic co sa tyka suboru samotneho. Nazov suboru pouzivam len ako tag do cache.