Néha jól jöhet, ha tudjuk, hogy egy-egy függvényünket milyen környezetből (milyen függvényből, mely osztály mely metódusából, melyik fájlból stb.) hívták meg. Ebben segíthet ez a snippet.
Hogy egy példát is írjak, hogy mikor lehet ez hasznos: tegyük fel, szeretnénk elérni, hogy csak a System nevű osztályunk hívhassa – közvetlenül – a DB osztályunk Query metódusát. A lenti függvény segítségével ez egyszerűen megoldható.
A visszaadott tömb kulcsairól olvashatunk az debug_backtrace függvény leírásánál. Fontos megjegyezni, hogy pont ennek a függvénynek a használata miatt legalább PHP 4.3-ra lesz szükségünk!
1 2 3 4 | function caller() { $trace = debug_backtrace(); return array_merge(array('function' => null, 'line' => null, 'file' => null, 'class' => null, 'object' => null, 'type' => null, 'args' => null), IsSet($trace[2]) ? $trace[2] : array()); } |