0

这里的想法是创建一个用于记录和调试目的的方法,它不需要向所述方法传递相关的“魔术常量”。

实际上,我正在尝试使用如下方法定义来实现这一点:

function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
...
}

我遇到的问题是,如果我在我正在“调试”的文件之外的文件中定义上述方法,我最终会得到文件中的文件和定义方法的文件中的行,而不是我我正在“调试”。

考虑以下文件集:

调试.php

<?
function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
    echo("$File ( $Line ) :: $Message");
}
?>

测试.php

<?
Debug("Some message");
?>

输出:

Debugging.php ( 1 ) :: Some message

当消息的调用发生在第二个文件中时——正如此时应该清楚的那样,这不是预期的实现。我当然可以在调用时将那些魔术常量传递给“调试”方法,但如果可能的话,我希望消除不必要的代码。

4

1 回答 1

0

你会像这样使用这个函数debug_backtrace

function Debug($Message)
{
    $backtrace =  debug_backtrace();
    echo($backtrace[0]['file'] .'(' . $backtrace[0]['line']  . ') :: ' . $Message);
}
于 2016-11-30T21:01:40.820 回答