Habe mir diese Debug-Funktion vor einigen Monaten geschrieben.
Verwendung:
PHP-Code:
<?php
Debug::write($var1, $var2, ..);
Debug::stop($var1, $var2, ..);
?>
stop() beendet das Skript nach der Ausgabe
PHP-Code:
<?php
////////////////////////////////////////////////////////////////////////////////////////////////////
class Debug
{
////////////////////////////////////////////////////////////////////////////////////////////////
// public static functions
/* public static */ function write()
{
$aArgv = func_get_args();
for ($i = 0, $k = 1, $iCount = count($aArgv); $i < $iCount; $i++, $k++) {
echo Debug::output($aArgv[$i], "ARG-$k");
}
echo Debug::backtrace();
}
/* public static */ function stop()
{
$aArgv = func_get_args();
for ($i = 0, $k = 1, $iCount = count($aArgv); $i < $iCount; $i++, $k++) {
echo Debug::output($aArgv[$i], "ARG-$k");
}
echo Debug::backtrace();
echo Debug::output('script stopped', 'MESSAGE', false);
exit;
}
////////////////////////////////////////////////////////////////////////////////////////////////
// private static functions
/* private static */ function output($mVariable, $sTitle = '', $bShowType = true)
{
if ($bShowType) {
ob_start();
var_dump($mVariable);
$sContents = ob_get_contents();
ob_end_clean();
} else {
$sContents = print_r($mVariable, true);
}
return sprintf("<pre>DEBUG %s\n%s\n</pre>", strtoupper($sTitle), $sContents);
}
/* private static */ function backtrace()
{
$aBacktrace = debug_backtrace();
$aReturn = array();
for ($i = 1, $iCount = count($aBacktrace); $i < $iCount; $i++) {
$aReturn[] = sprintf('%s:%u', $aBacktrace[$i]['file'], $aBacktrace[$i]['line']);
}
if (count($aReturn) == 0) {
return '';
}
return Debug::output($aReturn, "BACKTRACE", false);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
?>
Zusätzlich wird ausgegeben, über welche Skripte der Aufruf zustande kam.