我刚刚阅读了为什么从不使用“or die”,但是更加困惑了。我正在验证一个复杂的表单,需要通过许多嵌套的if语句等进行处理。我传递一个名为$status的变量给表单,该变量只能是“new”或“edit”。然后,当用户提交表单以再次验证时,表单将$status值作为隐藏字段($_POST)传递。我希望确保用户不能意外更改此值,因此我希望捕获除“new”或“edit”之外的任何错误。(虽然在理想世界中,我希望完全消除用户影响该变量的可能性。)
因此,我认为我会在if语句中使用DIE()
<nested ifs>
Select ($status){
Case 'edit':
break;
Case 'new':
break;
default:
//using example from article
trigger_error("An error that should not occur has occurred", E_USER_ERROR);
break;
}
</nested ifs>
我不太理解这种方法相对于die()更加干净的原因。本质上,我想调用另一个函数,该函数将向用户显示一些选项,让他们在此时修复错误,但我希望代码绝对停止运行,因为我不希望后面的if语句继续解析任何内容,并在发现除“new”或“edit”之外的内容时生成错误。
如果有任何不清楚的地方,请随时请问我澄清。 (或者更好的办法是,隐藏的用户字段是否会被黑客攻击?如何防止?: P)
set_error_handler
的好处在于,您实际上可以为各种(可处理的)错误类型设置多个处理程序。注意,某些错误无法处理,例如解析错误。 - Charles$_SESSION
或echo
一样,“它就是这样” ... 或者可能稍微更好地表述为“它在较低的层次提供”。 - Martin Tournoij