Voting

: one plus zero?
(Example: nine)

The Note You're Voting On

theking2 at king dot ma
8 months ago
The function trigger_error will terminate the script if $error_level is equal or higher than E_USER_ERROR.

If you write your own error handler you will have to do these yourself.

Example in which we assume the global LOG constant points to a PSR2 logging interface.
<?php

set_error_handler
( function ($errno, $errstr, $errfile, $errline) {
// error was suppressed with the @-operator
if( 0 === error_reporting() ) {
return
false;
}
switch(
$errno) {
default:
LOG->error( "Unknown error type: [$errno] $errstr", [ 'file' => $errfile, '@' => $errline ] );
exit(
1);

case
E_USER_ERROR: // fall through
case E_WARNING: // treat PHP warnings are errors
LOG->error( $errstr, [ 'file' => $errfile, '@' => $errline ] );
exit(
1);

case
E_USER_DEPRECATED:
case
E_DEPRECATED:
LOG->error( "DEPRECATED $errstr", [ 'file' => $errfile, '@' => $errline ] );
break;

case
E_USER_WARNING: // fall through
case E_NOTICE: // treat PHP notices are warnings
LOG->warning( $errstr, [ 'file' => $errfile, '@' => $errline ] );
break;

case
E_USER_NOTICE:
LOG->notice( $errstr, [ 'file' => $errfile, '@' => $errline ] );
break;

case
E_ERROR: // fall through
case E_RECOVERABLE_ERROR:
LOG->critical( $errstr, [ 'file' => $errfile, '@' => $errline ] );
exit(
1);

}
/* Don't execute PHP internal error handler */
return true;
} );
?>

<< Back to user notes page

To Top