Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 6.381 pregleda

Najnovija ↓

Fajl gde je definisana klasa 13.06.2007. u 18:51 · pre 236 meseci #1
Kako da za neki objekat
Code:
$obj = new Test() 

saznam fizicku lokaciju fajla u kome se nalazi ta Test klasa (fajl u kome je deklarisana), koja je tip objekta $obj.
Trazio sam po manual-u, ali mislim da nema takve funkcije ili mozda gresim...

Naravno skript u kome se pravi ovaj objekat je razliciti od skripta u kome se nalazi Test klasa.


Re: Fajl gde je definisana klasa 13.06.2007. u 19:15 · pre 236 meseci #2
Prvo sto meni pada na pamet je da u klasu test stavis neki ovakav metod:
Code:

class Test {
    
    function filename() {
        return __FILE__;
    }
}


pa onda mozes to da koristis kada ti je potrebno:
Code:

$obj = new Test();
print $obj->filename();


Potpis
Never trust an operating system you don't have sources for.
Re: Fajl gde je definisana klasa 13.06.2007. u 23:29 · pre 236 meseci #3
Slazem se sa tobom, ali problem je upravo sto ja ne mogu da menjam klasu Test. Ona je takva
kakva je...
Re: Fajl gde je definisana klasa 14.06.2007. u 00:02 · pre 236 meseci #4
Nasledi originalnu klasu i dodaj joj tu funkciju.
Nadam se da možeš da tu novu klasu dopišeš u istu datoteku.
Code:

class MojTest extends Test {
    function filename() {
        return __FILE__;
    }
}
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Fajl gde je definisana klasa 14.06.2007. u 03:19 · pre 236 meseci #5
hmmmm..... pa posto se bojim da sam te razumeo.... ako se sme znati, za sta ti tacno to treba? Sve mi mirise da hoces da 'aknes neki enkodiranu aplikaciju... Je l' to? :-)
Potpis
ZelenaLutrija.com - Saznajte sve o lutriji za zelenu kartu (doživotni boravak u Sjedinjenim Američkim Državama)
Re: Fajl gde je definisana klasa 14.06.2007. u 09:06 · pre 236 meseci #6
Ne mogu ni da je nasledim (tj. realno mogu, ali u tom slucaju bi morao da nasledim jos 100 i vise klasa),
a to mi nije bas cilj :) Resenje mora da bude univerzalno (bez obzira na metode i propertie-e koje ima
klasa TEST ili njoj neka slicna).
Inace ovo mi treba za neki backtrace.
Re: Fajl gde je definisana klasa 14.06.2007. u 09:53 · pre 236 meseci #7
Mozes i sa statickim funkcijama da probas, koristeci nasledjivanje:

Code:

class testKlasa extends originalnaKlasa {
    static function getFilename() {
        return __FILE__;
    }
}


i onda gledas koji je fajl sa:
Code:

echo testKlasa::getFilename();


Ja bih to tako radio.


EDIT: staticka funkcija je dodata da bi se izbeglo instanciranje klase.
Potpis
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
Re: Fajl gde je definisana klasa 14.06.2007. u 10:20 · pre 236 meseci #9
Tacno tako, s tom razlikom sto se izbegava instanciranje klase, a to je prakticnije-za ovu situaciju.

Ne vidim drugi nacin kako bi to odradio.
Potpis
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
Re: Fajl gde je definisana klasa 14.06.2007. u 10:37 · pre 236 meseci #10
Ok, naravno...
Ne vidim ni ja trenutno nacin da ovo resim :)
Bar ne na prvi pogled...
Mada verujem da je nekako moguce.


Re: Fajl gde je definisana klasa 14.06.2007. u 11:39 · pre 236 meseci #11
A da uradiš ovo:
originalne datoteke rename-uješ dodajući im recimo "_orig" u nastavku,
kreiraš nove datoteke u originalnom imenu a u njima u neki globalni array prijaviš sve klase ova druga sadrži i posle include-uješ originale.

Moglo bi i automatski, recimo sa get_declared_classes na početku dobiješ listu postojećih klasa, zatim include pa opet pozoveš get_declared_classes pa sa array_diff pronađi šta je novo stiglo pa to prijavi u globalni array.

Naravno taj array treba da ima index po imenu same klase a vrednost je path.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Fajl gde je definisana klasa 22.06.2007. u 22:11 · pre 235 meseci #13
Eh, sad se setih,
PHP od verzije 4.3 ima funkciju debug_backtrace(); koja ti vraća detaljno kroz koje si sve funkcije (možda i klase) ušao u trenutku njenog poziva, isprobaj.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme