?php / / redefine the user error constants - PHP 4 only define ("FATAL",E_USER_ERROR); define ("ERROR",E_USER_WARNING); define ("WARNING",E_USER_NOTICE); / / set the error reporting level for this script error_reporting (FATAL _BAR_ ERROR _BAR_ WARNING); / / error handler function function myErrorHandler ($errno, $errstr, $errfile, $errline) {switch ($errno) {case FATAL: echo "b FATAL / b [$errno] $errstr br \n"; echo" Fatal error in line ".$errline. "of file ".$errfile; echo", PHP ".PHP_VERSION. "(".PHP_OS .") br \n"; echo "Aborting... br \n"; exit(1); break; case ERROR: echo" b ERROR / b [$errno] $errstr br \n"; break; case WARNING: echo "b WARNING / b [$errno] $errstr br \n"; break; default: echo "Unkown error type: [$errno] $errstr br \n"; break;}} / / function to test the error handling function scale_by_log ($vect, $scale) {if (!is_numeric($scale) _BAR_ _BAR_ $scale = 0) trigger_error("log(x) for x = 0 is undefined, you used: scale = $scale", FATAL); if (!is_array($vect)) {trigger_error("Incorrect input vector, array of values expected", ERROR); return null;} for ($i=0; $i count($vect); $i++) {if (!is_numeric($vect[$i])) trigger_error("Value at position $i is not a number, using 0 (zero)", WARNING); $temp[$i] = log($scale) * $vect[$i];} return $temp;} / / set to the user defined error handler $old_error_handler = set_error_handler("myErrorHandler"); / / trigger some errors, first define a mixed array with a non-numeric item echo "vector a\n"; $a = array(2,3 ,"foo",5.5,43.3,21.11); print_r($a); / / now generate second array, generating a warning echo "----\nvector b - a warning (b = log(PI) * a)\n"; $b = scale_by_log($a, M_PI); print_r($b); / / this is trouble, we pass a string instead of an array echo "----\nvector c - an error\n"; $c = scale_by_log("not array",2.3); var_dump($c); / / this is a critical error, log of zero or negative number is undefined echo "----\nvector d - fatal error\n"; $d = scale_by_log($a, -2.5);?
On utilise 0 (zéro) à la place", WARNING); $temp[$i] = log($scale) * $vect[$i];} return $temp;} / / Ancienne fonction de traitement des erreurs $old_error_handler = set_error_handler("myErrorHandler"); / / Génération de quelques erreurs: définition d'un tableau avec des éléments non numériques echo "vector a\n"; $a = array(2,3 ,"foo",5.5,43.3,21.11); print_r($a); / / définition d'un deuxième table à problème echo "----\nvector b - a alerte (b = log(PI) * a)\n"; $b = scale_by_log($a, M_PI); print_r($b); / / Ceci est un problème, on passe une chaîne à la place d'un tableau echo "----\nvector c - une erreur\n"; $c = scale_by_log("not array",2.3); var_dump($c); / / Ceci est critique: le tableau contient des valeurs négatives echo "----\nvector d - fatal error\n"; $d = scale_by_log($a, -2.5);?