| Rogues Gallery |
Before we get into the nitty-gritty of how to write an error handler, you need to know a little theory.
Normally, when a PHP script encounters an error, it displays a message indicating the cause of the error and may also (depending on how serious the error is) terminate script execution. Now, while this behaviour is acceptable during the development phase, it cannot continue once a PHP application has been released to actual users. In "live" situations, it is unprofessional to display cryptic error messages (which are usually incomprehensible to non-technical users); it is more professional to intercept these errors and either resolve them (if resolution is possible), or notify the user with an easily-understood error message (if not).
There are three basic types of runtime errors in PHP:
1. Notices: These are trivial, non-critical errors that PHP encounters while executing a script - for example, accessing a variable that has not yet been defined. By default, such errors are not displayed to the user at all - although, as you will see, you can change this default behaviour.
2. Warnings: These are more serious errors - for example, attempting to include() a file which does not exist. By default, these errors are displayed to the user, but they do not result in script termination.
3. Fatal errors: These are critical errors - for example, instantiating an object of a non-existent class, or calling a non-existent function. These errors cause the immediate termination of the script, and PHP's default behaviour is to display them to the user when they take place.
It should be noted that a syntax error in a PHP script - for example, a missing brace or semi-colon - is treated as a fatal error and results in script termination. That's why, if you forget a semi-colon at the end of one of your PHP statements, PHP will refuse to execute your script until you correct the mistake.
PHP errors can be generated by the Zend engine, by PHP built-in functions, or by user-defined functions. They may occur at startup, at parse-time, at compile-time or at run-time. Internally, these variations are represented by twelve different error types (as of PHP 5), and you can read about them at http://www.php.net/manual/en/ref.errorfunc.php. Named constants like E_NOTICE and E_USER_ERROR provide a convenient way to reference the different error types.
A quick tip here: most of the time, you'll be worrying about run-time errors (E_NOTICE, E_WARNING and E_ERROR) and user-triggered errors (E_USER_NOTICE, E_USER_WARNING and E_USER_ERROR). During the debug phase, you can use the shortcut E_ALL type to see all fatal and non-fatal errors generated by your script, and in PHP 5 you might also want to use the new E_STRICT error type to view errors that affect the forward compatibility of your code.
How to do Everything with PHP & MySQL
How to do Everything with PHP & MySQL, the best-selling book by Melonfire, explains how to take full advantage of PHP's built-in support for MySQL and link the results of database queries to Web pages. You'll get full details on PHP programming and MySQL database development, and then you'll learn to use these two cutting-edge technologies together. Easy-to-follow sample applications include a PHP online shopping cart, a MySQL order tracking system, and a PHP/MySQL news publishing system.
Read more, or grab your copy now!