set_error_handler 錯誤攔截是否假設有 @ 則不報?

clipboard.png

有些錯誤是

Undefined index: password

類似這種
我已經加上 @不用報錯
但是在 set_error_handler 還是會報錯....
能不能略過有 @ 的?

阅读 2k
1 个回答

错误都是有意义的。

比如这个Undefined index,80%的情况是,有个参数没传进来,不在$_GET或者相应的数组里,引用个数组不存在的东西当然就要报错咯。但你不能为了不想看到就关掉它,这样当你想debug时,打开error.log一看,干干净净,所有应该发生问题的地方全被@给怼掉了,咋办?到时候只能绕更大的弯。

说回这个问题。其实解决很简单的,比如你要取个$_GET['id'],有没有你可以先去判断下,既然它是数组,那么肯定有方法检测这个键名是否存在咯,或者是一个固定的写法、或者是API,肯定有方法的,那么PHP里就可以用array_key_exists方法先去做个判断,如果有再取值,没有给它丢个空字符串或者其它什么标识就好了呀!比如:

$userid = array_key_exists('id', $_GET) ? $_GET['id'] : '';
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题