2012-04-08 85 views
0

我需要一個類似於宏的字符串在php中的定義,它將被字面解釋爲這個字符串,但我需要的是引用字符串所在的行和文件,而不是我的defs.php文件...我該如何定義這個?

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

redirectTo("login.php",REDIRECT_FROM); 

會導致如下:

redirected from abc.php line: 59 

希望我是清楚的。 (重定向從redirectTo()當然實現)

謝謝!

+2

爲什麼它必須是常量?你能不能把它作爲一個函數調用? – 2012-04-08 19:32:22

回答

3

你不能這樣做define() - 它設置常量,而不是宏。

一個可能的解決方案是使用功能和回溯:

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

你會隨後致電:

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

你也可以只建立這個邏輯到您的redirectTo()功能。

舉例:http://codepad.org/CGUXWgAB

相關問題