有没有办法将PHP魔术常量作为函数默认值?

时间:2016-11-30 20:52:22

标签: php debugging constants magic-constants

这里的想法是创建一种用于记录和调试目的的方法,它不需要将所述方法传递给相关的魔术常数'。

实际上,我尝试使用类似的方法定义来实现这一目标:

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;方法那些调用时的魔术常量,但我希望尽可能消除不必要的代码。

1 个答案:

答案 0 :(得分:0)

您可以像这样使用函数debug_backtrace

function Debug($Message)
{
    $backtrace =  debug_backtrace();
    echo($backtrace[0]['file'] .'(' . $backtrace[0]['line']  . ') :: ' . $Message);
}
相关问题