【问题标题】:Is there any way to carry down a PHP magic constant as a function default?有没有办法将 PHP 魔术常量作为函数默认值执行?
【发布时间】: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


【解决方案1】:

你会像这样使用函数debug_backtrace

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多