【发布时间】:2017-04-15 08:15:11
【问题描述】:
这里的想法是创建一个用于记录和调试目的的方法,它不需要向所述方法传递相关的“魔术常量”。
实际上,我正在尝试使用如下方法定义来实现这一点:
function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
...
}
我遇到的问题是,如果我在我正在“调试”的文件之外的文件中定义上述方法,我最终会得到文件中的文件和定义方法的文件中的行,而不是我正在“调试”的那个。
考虑以下文件集:
调试.php
<?
function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
echo("$File ( $Line ) :: $Message");
}
?>
Testing.php
<?
Debug("Some message");
?>
输出:
Debugging.php ( 1 ) :: Some message
当消息的调用发生在第二个文件中时——这点应该很清楚,这不是预期的实现。我当然可以在调用时将那些魔术常量传递给“调试”方法,但我希望尽可能消除不必要的代码。
【问题讨论】:
-
这就是
debug_stack_trace的用途。为什么你不能使用它? -
我想这是一个合理的解决方案,如果我想在每次发布消息时消耗大量的周期来解析它......
标签: php debugging constants magic-constants