PHP中的自定义var_dump函数

时间:2017-04-25 15:24:45

标签: php debugging xdebug

我正在制作类似于Laravel的dd功能的自定义调试助手功能。我有一个helpers.php文件,其中声明了该函数,该文件包含在我的项目中。这是函数的代码,虽然它并不重要:

/**
 * Simply dumps all arguments and then dies, like Laravel's dd function
 */
function dd() {
    $args = func_get_args();
    foreach ($args as $arg) {
        var_dump($arg);
    }
    die();
}

一切都很好,但有一点点不便。当我从我想要调试的文件调用函数时,我得到一个这样的行:/path/to/project/root/helpers.php:49:显然如预期的那样表示在我的helpers.php文件中调用var_dump的行。现在,理想情况下,我希望看到我调用dd函数的代码引用。我知道这是一个非常小的问题,但我想知道是否有办法。

更新

对于未来读者的附注,幸运的是xdebug可以选择省略var_dump中的参考代码。为此,请将php.ini选项xdebug.overload_var_dump设置为1(对我而言,默认情况下为2)。我个人在运行时这样做,因为我想在自定义转储ini_set("xdebug.overload_var_dump", "1");

期间获得效果

因此,在关闭xdebug中的代码引用后,您可以添加debug_backtrace()中自己的引用,如@JustOnUnderMillions所示:

$trace = debug_backtrace();
echo '<small>';
highlight_string($trace[0]['file'] . ':' . $trace[0]['line'] . ':' . PHP_EOL);
echo '</small>';

0 个答案:

没有答案