我怎么定义这个?

时间:2012-04-08 19:30:07

标签: php

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

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

redirectTo("login.php",REDIRECT_FROM);

会导致:

redirected from abc.php line: 59

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

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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