我有一个问题。我(想我)知道这两种方法都行得通,但我很好奇哪种方法更"正确"。
假设我们有一个表单,我们需要一个PHP脚本来处理用户输入。PHP脚本将检查输入是否被认为是垃圾邮件(与蜜罐方法一样),匹配CAPTCHA,验证内容,…每次条件返回false时,我们退出脚本(使用exit()
或die()
)。
代码假设是这样的:
if($input=='spam') {
die('This is spam');
} else {
if(!validation($input)) {
die('Input is not valid');
} else {
if(!matchCaptcha($input['captcha'])) {
die('Captcha doesn''t matcha');
} else {
//Process input...
}
}
}
我的问题如下:是否有必要每次都写"else",因为我们退出了脚本?
我一直是这样做的,因为我就是这样学会的。如你所见,我对代码还是个新手。
节省很多空格,回答我的问题!: D
提前感谢!
我发现,当与我构建代码的方式搭配使用时,使用else而不使用if表示没有考虑逻辑情况。而且,由于我的编码偏好,我会像上面那样使用成对的if-else语句(或使用if-elseif-else
,如Gio所示)编写代码。
然而,将if (..) die ..
逻辑扁平化到单个级别是没有问题的——这也适用于return
,抛出异常,以及任何其他"跳过剩余代码"的方法。原始代码在语义上等同于下面的浅层结构。
if($input=='spam') {
die('This is spam');
}
if(!validation($input)) {
die('Input is not valid');
}
if(!matchCaptcha($input['captcha'])) {
die('Captcha doesn''t matcha');
}
//Process input...