2012-04-08 16 views
0

Ich brauche eine Definition für eine Makro-ähnliche Zeichenfolge in PHP, die buchstäblich als diese Zeichenfolge interpretiert werden würde, aber ich brauche bezieht sich auf die Zeile und Datei, wo die Zeichenfolge statt meiner defs.php Datei platziert wird ...Wie definiere ich das?

define ("REDIRECT_FROM"," (".`____FILE____`." line:".`____LINE____`.")"); 

redirectTo("login.php",REDIRECT_FROM); 

würde wie:

redirected from abc.php line: 59 

Hoffe, dass ich klar war. (die umgeleitet von ist in der redirectTo() Funktion natürlich implementiert)

Vielen Dank!

+2

Warum muss es eine Konstante sein? Kannst du es nicht einfach zu einem Funktionsanruf machen? –

Antwort

3

Sie können dies nicht mit define() - es setzt Konstanten, keine Makros.

Eine mögliche Lösung ist eine Funktion und eine Backtrace mit:

function called_from(){ 
    $trace = debug_backtrace(); 
    $item = $trace[0]; 
    return " ({$item['file']} line:{$item['line']})"; 
} 

würden Sie rufen:

redirectTo("login.php", called_from()); 

Sie können auch nur diese Logik in Ihre redirectTo() Funktion bauen.

Ein Beispiel: http://codepad.org/CGUXWgAB