我需要在php中定义类似宏的字符串,它实际上会被解释为此字符串,但我需要引用放置字符串的行和文件而不是我的defs.php文件...
define ("REDIRECT_FROM"," (".`____FILE____`." line:".`____LINE____`.")");
redirectTo("login.php",REDIRECT_FROM);
会导致:
redirected from abc.php line: 59
希望我很清楚。 (重定向自当然在redirectTo()
函数中实现)
谢谢!
答案 0 :(得分:3)
你无法用define()
执行此操作 - 它设置常量,而不是宏。
可能的解决方案是使用函数和回溯:
function called_from(){
$trace = debug_backtrace();
$item = $trace[0];
return " ({$item['file']} line:{$item['line']})";
}
然后你会打电话:
redirectTo("login.php", called_from());
您也可以将此逻辑构建到redirectTo()
函数中。
答案 1 :(得分:0)
我认为这不可能,而且无论如何也不是这样做的好方法。您可以在redirectTo()中进行解析,并使用http://php.net/manual/en/function.debug-backtrace.php来回溯callstack。