Debugging Functions
Debugging is the bane of every programmer. When you’re trying to untangle why a variable isn’t set correctly inside a function—which was itself called from another function, which was included from an include file, which was wrapped inside a class—it can be maddening to track down where in the chain of events everything started to go wrong.
PHP 5 includes a set of functions that ease your pain. The
debug_backtrace( )
and debug_print_backtrace( )
functions return and print, respectively, an assortment
of information about the current function and every previous function
in the call stack.
Integrating Debugging into Your Code
One
good strategy for deploying debug_print_backtrace( )
is to define( )
a
DEBUG
constant whose value determines whether your
code should run in debugging mode. Example 7-9 is a
modified version of Example 7-8 with integrated
debugging scaffolding.
Example 7-9. Integrating backtrace debugging
// Enable debug mode; // Can be placed in a file that's added using the // auto_prepend_file configuration directive define('DEBUG', true); class duplicateUsernameException extends Exception { }; // Add user to database, throw exception if duplicate entry function addUser($db, $user) { $db->query("INSERT INTO users VALUES ('${user[0]}', '${user[1]}');"); // Error code 19 means INSERT violates UNIQUEness constraint // Throw duplicateUsernameException if ($db->lastError( ) = = 19) { throw new duplicateUsernameException( "${user[0]} already in database.", ...
Get Upgrading to PHP 5 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.