bitwise operators and error levels (php) -
i have created user error handler, , want make sure using bitwise operators correctly.
here config settings set errors handled in way:
// user error logging level (change production) define('lev_user_error_log_level', e_user_error | e_user_warning | e_user_notice); // user error display level (change production) define('lev_user_error_display_level', e_user_error);
here how set user error handler:
// set user error handler set_error_handler('user_error_handler', e_user_error | e_user_warning | e_user_notice);
here error handler itself:
// user error handler public static function user_error_handler($error_level, $message, $file_name, $line_number) { if (lev_user_error_log_level | lev_user_error_display_level == 0) return true; switch ($error_level) { case e_user_error: if (lev_user_error_log_level & e_user_error) { error_log('[' . date('y-m-d h:i:s') . '] user error: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.', request: "' . $_server['orig_path_info'] . "\"\n", 3, 'application/logs/user_error_log.txt'); } if (lev_user_error_display_level & e_user_error) { echo '[' . date('y-m-d h:i:s') . '] user level error: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.'<br />'; } die; break; case e_user_warning: if (lev_user_error_log_level & e_user_warning) { error_log('[' . date('y-m-d h:i:s') . '] user warning: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.', request: "' . $_server['orig_path_info'] . "\"\n", 3, 'application/logs/user_error_log.txt'); } if (lev_user_error_display_level & e_user_warning) { echo '[' . date('y-m-d h:i:s') . '] user level warning: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.'<br />'; } break; case e_user_notice: if (lev_user_error_log_level & e_user_notice) { error_log('[' . date('y-m-d h:i:s') . '] user notice: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.', request: "' . $_server['orig_path_info'] . "\"\n", 3, 'application/logs/user_error_log.txt'); } if (lev_user_error_display_level & e_user_notice) { echo '[' . date('y-m-d h:i:s') . '] user level notice: "' . $message . '", file: "'.$file_name.'", line: '.$line_number.'<br />'; } break; default: // call php internal error handler return false; } // not call php internal error handler return true; }
questions:
- the bitwise or operator used in handler setting make error handler called when 1 of 3 errors occurs?
- the bitwise or operator used in first line of error handler make if both of config settings set zero, function exit?
in line
if (lev_user_error_log_level | lev_user_error_display_level == 0) return true;
the comparison stronger bitwise operator, need parentheses:
if ((lev_user_error_log_level | lev_user_error_display_level) == 0) return true;
then code work describe.
Comments
Post a Comment