New in Xdebug 2.2: Colours on the command line
This is the first article in a series about new features in Xdebug 2.2. Besides support for PHP 5.4, there are a few that might be of interest.
Xdebug has overloaded var_dump() with xdebug_var_dump() for a long time and the overloaded function could be configured with a few configuration settings. There is xdebug.var_display_max_data to configure how much of a string should be shown; xdebug.var_display_max_children to configure how many children in an array should be shown and xdebug.var_display_max_depth to configure how many levels "deep" the var_dump() should go on for. This functionality was available for when PHP had its html_errors setting on as is usually the case in a web environment1.
Xdebug 2.2 adds this same functionality to the non-HTML environment: the command line. Now the overloaded var_dump() and native xdebug_var_dump() functions also accept the three aforementioned settings:
derick@whisky:~$ php \
-dxdebug.var_display_max_data=8 \
-dxdebug.var_display_max_children=4 \
-r 'var_dump( "a longer string", array( 1, 2, 3, 4, 5, 6, 7 ) );'
outputs:
string(15) "a longer"...
array(7) {
[0] =>
int(1)
[1] =>
int(2)
[2] =>
int(3)
[3] =>
int(4)
(more elements)...
}
Now, to be fair. This is all a side effect; and merely an add-on to a patch by Michael Maclean. He wrote a patch that adds colours to the output on the command line by using ANSI escape codes. This patch also made the overloaded var_dump() listen to the limiting settings for variable display. After his patch, the following was the behaviour on the command line as long as stdout is a tty and xdebug.cli_color is set to 1.
I have extended this so that the settings regarding data display also work without xdebug.cli_color set to 1. Further more, in Xdebug 2.2.0RC1, setting xdebug.cli_color to 2 forces the colours from being shown, even if stdout is not a tty.
Initially, the colour coding of errors and var_dump() output, would only work on a Unix system where ANSI escape codes are commonly supported. After the release of Xdebug 2.2.0RC1, Chris Jones submitted a bug report suggesting that this functionality could also be available on the Windows console. I wasn't aware that Windows could do this any more since they dropped ANSI.SYS but apparently there is a tool, ANSICON, that reimplements this. From the next release, Xdebug 2.2.0RC2, Xdebug will now also check whether the ANSICON environment variable is set, just like Xdebug would check whether stdout is a tty on a Unix platform. As a result, the equivalent console output as shown before looks like the following on Windows (providing ANSICON is installed):
Now the only thing left is adding complete documentation for this feature ;-)
As always, if you think Xdebug is a valuable tool, have a look at http://xdebug.org/buy-support.php.
Comments
would you accept a patch to add a parameter to xdebug_var_dump to always emit ANSI codes even in a webserver SAPI? This could be extemely handy for curl-based debugging of APIs.
If so, I would look into making this happen (with the disclaimer that my C is very, very rusty)
@Philip; Sadly, we can't do that as var_dump() and xdebug_var_dump() take one or more variables as arguments to dump.
-
1
: Except for in PHP 5.3, where this sadly was turned off by default.
Life Line
Red Knots in Flight
Just some of the 25,000 birds in the flock(s). But they were straight overhead showing their bellies, and the different stages of winter plumage.
#photography #Birds #BirdPhotography #BirdsOfFediverse #NaturePhotography #wildlife #Norfolk #RSPB
Determine roads lane count
Specify whether crosswalks have tactile paving
Specify whether pedestrian crossings have islands
Specify street/place names to addresses
Specify whether roads have lane markings
Survey postbox collection times
Specify road surfaces
Specify whether roads have sidewalks
Specify maximum heights
Survey housenumbers
Specify whether there are cycleways
Saw a rare Glossy Ibis yesterday at Rainham Marshes.
Not great photos, but you can't have it all.
#photography #Birds #BirdPhotography #BirdsOfFediverse #NaturePhotography #wildlife #RSPB
A Jack Snipe Close Up
I had a lovely day out at the Rainham Marshes yesterday. One hide I stumbled into was full of excitement, and it turned out this Jack Snipe was bobbing up and down right under the hide while foraging.
After a while, a crow spoiled the view and chased it off.
#photography #Birds #BirdPhotography #BirdsOfFediverse #NaturePhotography #wildlife #RSPB
Specify whether pedestrian crossings have traffic signals
Specify bicycle parking types
Specify bicycle parkings covers
Specify type of entrances
Specify street/place names to addresses
Specify whether roads have lane markings
Specify whether there are cycleways
Specify whether roads have sidewalks
Determine the heights of kerbs at crossings
Specify whether crosswalks have tactile paving
Specify whether pedestrian crossings have islands




Shortlink
This article has a short URL available: https://drck.me/clicolor-9cr