if($condition1) {
trigger_error("The script is now terminated");
}
if($condition2) {
trigger_error("The script is now terminated");
}
echo "If either condition was true, we won't see this printed";
Example 2
if(!$condition1) {
if(!$condition2) {
echo "If either condition was true, we won't see this printed";
}
else {
trigger_error("The script is now terminated");
}
}
else {
trigger_error("The script is now terminated");
}
例子 3
if($condition1) {
trigger_error("The script is now terminated");
}
else {
if($condition2) {
trigger_error("The script is now terminated");
}
else {
echo "If either condition was true, we won't see this printed";
}
}
示例4 -- 改编自弗雷泽的回答
function test($condition) {
if($condition) {
trigger_error("The script is now terminated");
}
}
test($condition1);
test($condition2);
echo "If either condition was true, we won't see this printed";
个人而言,我更倾向于像示例1中编写代码。这是因为我觉得通过检查以这种方式结束脚本(或函数)的条件,我可以清楚地定义脚本已执行和未执行的内容,即在该条件之前所有内容都已执行,在该行之后的所有内容都未执行。这意味着当我在第147行遇到错误时,我立即知道发生了什么,从而帮助我更快地找到错误。此外,如果我突然意识到需要先测试$condition2再测试$condition1,我可以通过简单的复制粘贴进行更改。
我看到有很多代码像示例2那样编写,但对我来说,这似乎更难以调试。这是因为,当嵌套变得太深时,错误会在底部的某个遥远的行触发,并且与导致错误的条件被大量嵌套的代码块分隔开。此外,更改条件序列可能会更加混乱。
您可以将两种样式混合在一起,例如示例3,但这似乎会过于复杂化问题,因为所有的“else”实际上都是多余的。
我有什么遗漏吗?如何结构化我的条件代码才是最佳方法?除这些示例之外,是否有更好的方式?是否有特定情况下一种样式可能优于另一种? 编辑:示例4看起来非常有趣,这是我没有考虑过的。您还可以将错误消息作为第二个参数传递。
谢谢!
P.S. 请记住,我可能需要在检查$condition1和$condition2之间执行一些任意步骤,因此任何替代方案都必须考虑到这一点。否则,存在一些微不足道的更好的选择,例如if($condition1 || $condition2)。