这里的想法是创建一种用于记录和调试目的的方法,它不需要将所述方法传递给相关的魔术常数'。
实际上,我尝试使用类似的方法定义来实现这一目标:
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
当在第二个文件中发生消息调用时 - 这一点应该清楚,这不是预期的实现。我当然可以通过调试&#39;方法那些调用时的魔术常量,但我希望尽可能消除不必要的代码。
答案 0 :(得分:0)
您可以像这样使用函数debug_backtrace
。
function Debug($Message)
{
$backtrace = debug_backtrace();
echo($backtrace[0]['file'] .'(' . $backtrace[0]['line'] . ') :: ' . $Message);
}