Heim > Artikel > Backend-Entwicklung > Viele Probleme treten auf, nachdem die Fehlerbehandlung in PHP set_error_handler eingestellt wurde? ?
Das Folgende ist eine Methode, die ich angepasst habe, um Variablen im Array in globale Variablen zu importieren. Bei der Beurteilung, ob eine Variable mit demselben Schlüsselnamen wie das angegebene Array bereits in der globalen Variablen vorhanden ist, wird jedoch immer ein Fehler gemeldet. Auch wenn @ unterdrückt wird, wird der Fehler weiterhin gemeldet, es sei denn, set_error_handler wird entfernt wird nicht gemeldet. Wie kann dieses Problem gelöst werden? ?
<code>ini_set('display_errors' , 'On'); error_reporting(E_ALL); // 设置错误处理函数后, ini_set() && error_reporting() 这两个函数会失效,这是怎么回事(次要)?? set_error_handler('test'); function test($err_level , $err_msg , $err_file , $err_line , $err_ctx){ echo '发生错误了!'; echo "\r\n"; echo "\r\n"; } function extract_global(array $arr = array()){ if (empty($arr)) { return ; } foreach ($arr as $key => $val) { // 这个地方怎么都抑制不了错误提示! // 如果把 set_error_handler 这个去掉,就可以抑制错误 // 怎么解决这个问题(主要)?? if (!is_null(@$GLOBALS[$key])) { trigger_error('已存在全局变量: ' . $key . '!' , E_USER_ERROR); exit; } $GLOBALS[$key] = $val; } } $arr = array( 'name' => 'programmer' , 'hobby' => 'play computer game' ); extract_global($arr); print_r($name); print_r("\r\n"); print_r($hobby); </code>
Das Folgende ist eine Methode, die ich angepasst habe, um Variablen im Array in globale Variablen zu importieren. Bei der Beurteilung, ob eine Variable mit demselben Schlüsselnamen wie das angegebene Array bereits in der globalen Variablen vorhanden ist, wird jedoch immer ein Fehler gemeldet. Auch wenn @ unterdrückt wird, wird der Fehler weiterhin gemeldet, es sei denn, set_error_handler wird entfernt wird nicht gemeldet. Wie kann dieses Problem gelöst werden? ?
<code>ini_set('display_errors' , 'On'); error_reporting(E_ALL); // 设置错误处理函数后, ini_set() && error_reporting() 这两个函数会失效,这是怎么回事(次要)?? set_error_handler('test'); function test($err_level , $err_msg , $err_file , $err_line , $err_ctx){ echo '发生错误了!'; echo "\r\n"; echo "\r\n"; } function extract_global(array $arr = array()){ if (empty($arr)) { return ; } foreach ($arr as $key => $val) { // 这个地方怎么都抑制不了错误提示! // 如果把 set_error_handler 这个去掉,就可以抑制错误 // 怎么解决这个问题(主要)?? if (!is_null(@$GLOBALS[$key])) { trigger_error('已存在全局变量: ' . $key . '!' , E_USER_ERROR); exit; } $GLOBALS[$key] = $val; } } $arr = array( 'name' => 'programmer' , 'hobby' => 'play computer game' ); extract_global($arr); print_r($name); print_r("\r\n"); print_r($hobby); </code>
Der Fehlerhandler wird zum Sammeln von Fehlern verwendet. Wenn Sie bestimmte Fehler nicht behandeln möchten, überspringen Sie sie einfach im Fehlerhandler. Dies sollte nicht durch die Fehlerebene gesteuert werden.