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.", ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access