Processing Errors with a Custom Handler

In PHP 4, you can enable a custom error handler for all errors by calling set_error_handler( ). PHP 5 lets you refine that behavior by allowing you to specify which types of errors the handler should process.

To restrict set_error_handler( ) to a subset of errors, pass it a second argument. For example:

set_error_handler('my_error_handler',  E_NOTICE);

function my_error_handler($errno, $errstr, $errfile, $errline) {
    print "A notice occurred\n";
}

$a++;

A notice occurred

This example sets my_error_handler( ) as the handler for E_NOTICE errors, but lets PHP handle all other error types. Since incrementing an undefined variable triggers a notice, PHP invokes the function.

If the custom error handler returns false, then PHP also does its own set of error handling, in addition to whatever you code inside your handler. For instance:

set_error_handler('my_error_handler',  E_NOTICE);

function my_error_handler($errno, $errstr, $errfile, $errline) {
    print "A notice occurred\n";
    return false;
}

$a++;

PHP Notice:  Undefined variable:  a...
            A notice occurred

This example is identical to the last one, except that my_error_handler( ) now returns false. As a result, you get two sets of messages: PHP’s and yours.

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.