PHP中的自定义var_转储函数

PHP中的自定义var_转储函数,php,debugging,xdebug,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) {

我正在制作一个自定义调试助手函数,类似于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_转储中省略参考代码。为此,将php.ini选项
xdebug.overload\u var\u dump
设置为1(对于我来说,默认值为2)。我个人是在运行时这样做的,因为我希望在自定义转储
ini_集(“xdebug.overload_var_dump”,“1”)期间获得效果

因此,在关闭xdebug的代码引用后,您可以从
debug\u backtrace()
添加您自己的引用,如@JustOnUnderMillions所建议的那样:

$trace = debug_backtrace();
echo '<small>';
highlight_string($trace[0]['file'] . ':' . $trace[0]['line'] . ':' . PHP_EOL);
echo '</small>';
$trace=debug_backtrace();
回声';
突出显示字符串($trace[0]['file'].:'.$trace[0]['line'.].:'.PHP_EOL);
回声';

这个函数可以很好地帮助您,我完全不知道这个函数,看起来像是进行低级调试的方法。谢谢我的问题可能有点愚蠢(因为我不知道完整的上下文——你实际上打算如何使用它等等)。。但是为什么不使用实际的xdebug和编辑器/IDE(例如NetBeans/PhpStorm/任何支持xdebug的东西)?它是交互式的:您也可以看到其他值;您可以更改现有值,以查看代码在这种情况下的行为,而无需重新运行代码等。如果xdebug不是选项或无法使用(例如共享主机等),为什么不尝试PHP 5.6内置调试器(当然,如果可用)@LazyOne,事实上,我已经使用PhpStorm大约两个月了,而且我以前从未使用过用于web开发的IDE,所以这一定是我不知道的一千个特性之一。关于xdebug,我仍然在使用它,我只是省略了提到触发代码行的第一行,并显示了调用转储的实际行
xdebug.overload\u var\u dump
必须为0才能完全关闭,我已将其设置为模式1,而不是默认模式2