Why does var_dump show filename and line number?
If you don't want the extra data produced by var_dump()
, you can use var_export()
which will show a stripped-down output.
Here is a test case:
$values = [
0 => '',
1 => 'foo',
2 => null,
3 => false,
4 => true,
5 => 0,
6 => new stdClass
];
var_dump():
foreach ($values as $value) {
echo var_dump($value) . PHP_EOL;
}
Output of plain old PHP:
string(0) ""
string(3) "foo"
NULL
bool(false)
bool(true)
int(0)
object(stdClass)#1 (0) {
}
Output of PHP XDEBUG:
/var/www/html/test.php:12:string '' (length=0)
/var/www/html/test.php:12:string 'foo' (length=3)
/var/www/html/test.php:12:null
/var/www/html/test.php:12:boolean false
/var/www/html/test.php:12:boolean true
/var/www/html/test.php:12:int 0
/var/www/html/test.php:12:
object(stdClass)[1]
var_export():
foreach ($values as $value) {
echo var_export($value) . PHP_EOL;
}
Output of PHP (plain or with XDEBUG)
''
'foo'
NULL
false
true
0
(object) array(
)
You have xdebug enabled.
One of the new features relates to one of the first things that I added in the original Xdebug: making the var_dump() output "pretty". Xdebug replaces PHP's standard var_dump() function with its own version, as long as the xdebug.overload_var_dump setting is not set to 0
Xdebug 2.3 enhances the overloading of var_dump() with the inclusion of the file name and line number where var_dump() is called at. This has been a long standing feature request.
Here is my output without xdebug;
>php -r "var_dump('lol')";
string(3) "lol"
https://derickrethans.nl/xdebug-2.3-overload-vardump.html