0

我需要在 php 中定义一个类似宏的字符串,它实际上会被解释为这个字符串,但我需要的是引用放置字符串的行和文件,而不是我的 defs.php 文件......

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

redirectTo("login.php",REDIRECT_FROM);

结果是:

redirected from abc.php line: 59

希望我很清楚。(重定向自redirectTo()当然是在函数中实现的)

谢谢!

4

2 回答 2

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

于 2012-04-08T19:34:18.687 回答
0

我不认为这是可能的,而且它也不是这样做的好方法。您可以在 redirectTo() 中进行解析并使用http://php.net/manual/en/function.debug-backtrace.php回溯调用堆栈。

于 2012-04-08T19:33:59.807 回答