Viele Probleme treten auf, nachdem die Fehlerbehandlung in PHP set_error_handler eingestellt wurde? ?

WBOY
Freigeben: 2016-10-10 11:55:57
Original
1047 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

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>
Nach dem Login kopieren
Nach dem Login kopieren

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.

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage