为什么var_dump显示文件名和行号?

Sel*_*t0r 7 php var-dump

就在最近,PHP中的var_dump()(目前使用的是5.6.23)在实际转储变量之前就开始打印出文件名和行号.我不知道服务器上有任何重大变化,所以我想知道为什么会这样,也就是在网上或PHP文档中找不到任何东西(var_dump())

使用命令行时也会发生奇怪的行为:

 > php -r 'var_dump("lol");'
 Command line code:1:
 string(3) "lol"
Run Code Online (Sandbox Code Playgroud)

虽然我习惯于"字符串(3)"lol""被打印.

这不是一个showstopper,但打破了我的几个单元测试,我需要比较一些使用var_dump()打印的API的输出.我首先想到它可能与xdebug有关,但找不到任何似乎与此问题相关的指令.

任何提示导致这一点的提示都表示赞赏.

Mak*_*hin 8

您已启用xdebug.

其中一个新功能涉及我在原始Xdebug中添加的第一件事:使var_dump()输出"漂亮".只要xdebug.overload_var_dump设置未设置为0,Xdebug就会将PHP的标准var_dump()函数替换为自己的版本


Xdebug 2.3通过包含调用var_dump()的文件名和行号来增强var_dump()的重载.这是一项长期存在的功能要求.

这是我没有xdebug的输出;

>php -r "var_dump('lol')";
string(3) "lol"
Run Code Online (Sandbox Code Playgroud)

https://derickrethans.nl/xdebug-2.3-overload-vardump.html

  • 添加到单元测试以禁用 xdebug 重载 `ini_set('xdebug.overload_var_dump', '0');` 的行 (2认同)