dongyong9224 2017-04-25 15:24
浏览 77

PHP中的自定义var_dump函数

I am making a custom debugging helper function similar to Laravel's dd function. I have a helpers.php file where the function is declared and that file is included into my project. Here's the code of the function, though it doesn't really matter:

/**
 * 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();
}

Everything's working good, with one tiny inconvenience. When I am calling the function from the file I want to debug, I am getting a line like this: /path/to/project/root/helpers.php:49: which obviously as expected indicates the line where var_dump is called inside my helpers.php file. Now, ideally, I would instead like to see the code reference where I am calling the dd function. I know it's a really tiny matter, but I am wondering if there is a way.

UPDATE

Side note for future readers, luckily xdebug has an option to omit the reference code from the var_dump. To do this, set the php.ini option xdebug.overload_var_dump to 1 (for me it was 2 by default). Personally I do this in runtime, since I want the effect during my custom dumping ini_set("xdebug.overload_var_dump", "1");

So, after turning off the code reference from xdebug, you can add your own reference from debug_backtrace() as @JustOnUnderMillions suggested like this:

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

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错
    • ¥15 单片机学习顺序问题!!
    • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
    • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)