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:

  1. the bitwise or operator used in handler setting make error handler called when 1 of 3 errors occurs?
  2. 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

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -