PHP Classes

File: debug.inc.php

Recommend this page to a friend!
  Classes of David Phillips   debug   debug.inc.php   Download  
File: debug.inc.php
Role: ???
Content type: text/plain
Description: Debug class
Class: debug
Debugging class with log file or screen output
Author: By
Last change:
Date: 23 years ago
Size: 5,856 bytes
 

Contents

Class file image Download
<?php /* debug.inc.php -- debugging class for PHP usage: debug ( $logfile $halt = "NO" | "yes" $show = "BOTH" | "file" | "screen" | "off" ) debug->report ($message, __LINE__, __FILE__, {$var_name, $var_value}...); (c) Copyleft 2000 eBoing, Inc. David Phillips $Id: debug.inc.php,v 0.1 2000/10/08 01:13:00 $ */ class debug { var $classname = "debug"; function debug ($logfile = "", $halt = "no", $show = "both") { /* public: Constructor logfile: optional file in which to record messages halt: optional setting for halt action = "NO" | "yes" show: optional setting for where (and whether) to output debug->report calls = "BOTH" | "file" | "screen" | "off" */ $this->set_log ($logfile); $this->set_halt ($halt); $this->set_show ($show); } function set_log ($logfile) { /* public: set_log (filename $logfile) logfile: optional file for logging error messages */ if (empty ($logfile)) { $this->logfile = ""; } else { $this->logfile = $logfile; $f = fopen ($this->logfile, 'a'); // check whether we can use the file if (!$f) { printf ("<b>Debug:</b> unable to open %s as log file<br>\n", $this->logfile); return false; } } return true; } function set_halt ($halt = "no") { /* public: set_halt (string $halt) halt: optional setting for halt action "no" => report error, continue; default "yes" => report error, halt */ $this->halt = strtolower ($halt); } function set_show ($show) { /* public: set_show (string $show) show: optional setting for where (and whether) to output debug->report calls = "BOTH" | "file" | "screen" | "off" */ $this->show = strtolower ($show); } function report ($msg = "", $line = "", $file = "") { /* public: report ($msg, $line, $file, {$var_name, $var_value}...) $msg: debug message to show $line: optional line number (use __LINE__) $file: optional executing file name (use __FILE__) Optional repeating pairs { $var_name $var_value } */ static $debug_calls = 0; // track how many times we've been called $debug_calls++; if ($this->show == "off") return; $args = func_get_args (); // get an array of all the function arguments we were called with $n_args = count ($args) - 1; // and a count of all but one (the message) if ($this->show == "both" or $this->show == "screen") { $s = "<p><hr>\n<b>Debug</b> $debug_calls: "; $l = $line != "" ? "on line <b>$line</b>: " : ""; $f = $file != "" ? "in file <b>$file</b>, " : ""; echo "$s $f $l $msg <br>\n"; if ($n_args % 2) { // remaining arguments are unpaired (n/2 != 0) echo "&nbsp; &nbsp; usage: \$debug->report (\$msg, \$line, \$file, {\$var, \$value}...)<br>\n"; } else { // paired arguments (n/2 = 0) for ($i = 3; $i < $n_args; $i += 2) { echo "&nbsp; &nbsp; \$$args[$i]: " . $args[$i + 1]; echo " ... (" . gettype ($args[$i + 1]) . ")<br>\n"; } } echo "<hr><p></p>\n"; } // show screen if ($this->show == "both" or $this->show == "file") { // Repeat for logfile output. if (!empty ($this->logfile)) { $fh = fopen ($this->logfile, 'a'); // append to log file if ($fh) { $s = "Debug $debug_calls: "; $l = $line != "" ? "on line $line: " : ""; $f = $file != "" ? "in file $file, " : ""; fputs ($fh, "$s$f$l$msg\n"); if ($n_args % 2) { fputs ($fh, " usage: \$debug->report (\$msg, \$line, \$file, {\$var, \$value}...)\n"); } else { for ($i = 3; $i < $n_args; $i += 2) { fputs ($fh, " \$$args[$i]: " . $args[$i + 1]); fputs ($fh, " ... (" . gettype ($args[$i + 1]) . ")\n"); } } fclose ($fh); } } // logfile } // show file if ($this->halt == "yes") die ("<b>Halt</b>"); } // report // Deprecated :) function do_report ($msg, $var, $value = "") { /* public, override: do_report ($msg) msg: error message to show var: variable name to show value: variable value to show */ printf ("<b>Debug:</b> %s<br>\n", $msg); if (is_array ($var)) { reset ($var); while (list ($k, $v) = each ($var)) { if (!empty ($k)) printf ("key: %s = value: %s<br>\n", $k, $v); } } else { if (!empty ($var)) printf ("%s = %s<br>\n", $var, $value); } // Repeat for logfile output. if (!empty ($this->logfile)) { $f = fopen ($this->logfile, 'a'); // append to log file if ($f) { fputs ($f, $msg); if (is_array ($var)) { reset ($var); while (list ($k, $v) = each ($var)) { if (!empty ($k)) fputs ($f, "key: $k = value: $v<br>\n"); } } else { if (!empty ($var)) fputs ($f, "$var = $value<br>\n"); } fclose ($f); } } } // do_report } // debug.inc.php ?> <?php require "./include/debug.inc.php"; $dbg = new debug ("foo.txt"); $dbg->report (); $dbg->report ("Zeroth message"); $dbg->report ("First message", __LINE__); $dbg->report ("Second message", __LINE__, __FILE__); $test = 55; $dbg->report ("Third message", __LINE__, __FILE__, "test", $test); $test = 66; $test2 = $test / 2; $dbg->report ("Fourth message", __LINE__, __FILE__, "test", $test, "test2", $test2); $dbg->report ("Fifth message", __LINE__, __FILE__, "test", $test, "test2"); $dbg->set_show ("File"); $test3 = "Brillig"; $dbg->report ("Sixth message, show=file", __LINE__, __FILE__, "test3", $test3); $dbg->set_show ("SCREEN"); $dbg->report ("Seventh message, show=screen"); $dbg->set_show ("off"); $dbg->report ("Eighth message, show=off"); $dbg->set_show ("both"); $dbg->report ("Nineth message, show=both"); $dbg->set_halt ("yes"); $dbg->report ("Tenth message, halt=yes"); $dbg->report ("Eleventh message"); ?>