Runtime Variable Inspection
The most common way to debug is to stick echo statements into your code at strategic places. If you are feeling clever, you might even output a variable’s value too:
echo "<p>here: $myvar = $myvar";</p>
I call this runtime variable inspection and as PHP is a script language, it’s a very fast way to debug a script. You stick the echo statement at strategic points and with a few page refreshes in the browser, you have the troublesome bit of code nailed.
However echo $var doesn’t really cut it for variables or objects (or booleans for that matter). To this end I wrote myself a function called DBG() to print out a variety of variables sensibly.
The code looks like this:
function DBG($var, $title='', $echo_to_screen = true)
{
if($title)
$titleText = "Debug display of '$title':";
else
$titleText = "Debug: ";
ob_start();
echo "<p><b>$titleText</b><pre>n";
if(is_array($var))
{
echo "Number of elements: " . count($var) . "n";
print_r($var);
}
elseif(is_object($var))
{
print_r($var);
}
elseif(is_string($var))
{
print_r(htmlentities(str_replace("t",' ',$var)));
}
elseif(is_bool($var))
{
echo $var === true ? 'true' : 'false';
}
else
{
print_r($var);
}
echo "</pre></p>n";
$output = ob_get_contents();
ob_end_clean();
if($echo_to_screen)
{
echo $output;
}
return $output;
}
It works wonders for fixing nearly all the bugs I have to deal with. Anything more complicated usually means that I break out the proper debugger in Zend Studio (wish they had a Firefox toolbar!)


