hi,
ich hab vor mir ein eigenes objectmodel mit php5 zu erstellen
dazu möchte ich jede methode mit einer log-funktion auszustatten, wie folgt
function log($user, $priority, $location, $msg)
{
#code, der loggt
}
der aufruf soll ungefähr so aussehen
log(1,1, __FILE__ . __CLASS__ . __FUNCTION__, 'meine message ');
jetzt ist mir jedesmal das schreiben von __FILE__ __CLASS__ __FUNCTION__ zu viel
ansatz:
define( '_LOG' , __FILE__ . __CLASS__ . __FUNCTION__);
#...
log(1,1, _LOG , 'meine message ');
das würde ja aber zwei preprozessordurchläufe notwendig machen - gehjt also nicht
hat jemand eine idee, wie ich meiner log-funktion so kurz wie gewollt schreiben kann, trotzdem aber die aktuelle zeile und methode mit reinbekomme ... ?
php - konstanten redefinieren
php - konstanten redefinieren
gruss pischti
debian stable
debian stable
- ManInTheShak
- Beiträge: 108
- Registriert: 30.09.2003 19:50:54
Hallo,
sofern in PHP5 möglich könntest du die Funktion log() ja einfach Überladen
oder was aber auf jeden fall geht, ist eine eigene Funktion definieren die dann LOG aufruft.
Beispiel:
Gruß ManInTheShak
sofern in PHP5 möglich könntest du die Funktion log() ja einfach Überladen
oder was aber auf jeden fall geht, ist eine eigene Funktion definieren die dann LOG aufruft.
Beispiel:
Code: Alles auswählen
function _log($user, $priority, $msg)
{
log($user, $priority, __FILE__ . __CLASS__ . __FUNCTION__,$msg);
}
- ManInTheShak
- Beiträge: 108
- Registriert: 30.09.2003 19:50:54
StimmtPischti hat geschrieben:na, dein code ist ja witzig ...
Was evtl. noch gehen könnte, ist eine Classe zu instanzieren und in den Constructor __construct __LINE__ etc zu verwenden (siehe 1 Exceptions Example), was dann aber nur mit PHP 5 gehen könnte.
Gruß ManInTheShak
[1] http://www.zend.com/php5/articles/engin ... #Heading12
moin,
den caller bekommste über:
die cls is natürlich nur da, wenns n object war
gruss
ts
den caller bekommste über:
Code: Alles auswählen
$trace = debug_backtrace();
$caller= $trace[1]['class'].'::'..$trace[1]['function'];
gruss
ts