这里的想法是创建一种用于记录和调试目的的方法,不需要通过该方法通过该方法相关的'魔术常数'。
有效地,我正在尝试使用类似方法定义来实现此目的:
function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
...
}
我遇到的问题是,如果我在文件"调试"以外的文件中定义了上述方法,则最终将文件和行中的列表定义为中,而不是在文件中定义,而不是我正在"调试"。
考虑以下文件集:
debugging.php
<?
function Debug($Message,$File=__FILE__,$Line=__LINE__)
{
echo("$File ( $Line ) :: $Message");
}
?>
testing.php
<?
Debug("Some message");
?>
输出:
Debugging.php ( 1 ) :: Some message
当消息的调用发生在第二个文件中时 - 到目前为止应该清楚的是,这不是预期的实现。当然,我可以在调用时通过"调试"方法那些魔术常数,但是如果可能的话,我希望消除不必要的代码。
您将使用该函数debug_backtrace
So。
function Debug($Message)
{
$backtrace = debug_backtrace();
echo($backtrace[0]['file'] .'(' . $backtrace[0]['line'] . ') :: ' . $Message);
}