我有一个图像上传表单,在上传文件之前,我会用它调用多个函数,例如检查大小、尺寸以及它是否是有效的图像。代码可以工作,但调用函数和处理结果似乎相当繁琐和复杂。
有没有一种更整洁的方式来构建代码。
这就是我目前拥有的:
if(checkvalidfile("img",$ext)){
if(checksize($size, 524288)) {
if(checkdimensions($tmp, 300)) {
$newfilename = renamefile($ext);
uploadfile($tmp, $bucket, "user_docs/agency_".$agency_id."/brand_logos/", $newfilename, $s3);
header('Location: ./message.php?action=newlogo');
} else {
echo "Your image can't be bigger than 300 x 300px";
die;
}
} else {
echo "File size is too big!";
die;
}
} else {
echo "Not a valid file";
die;
}
由于您是die
,因此不需要else
。用!
否定您的条件,然后全部取消测试:
if(!checkvalidfile("img",$ext)){
echo "Error message";
die;
}
if(!checksize($size, 524288)) {
echo "error message";
die;
}
if(!checkdimensions($tmp, 300)) {
echo "Error message";
die;
}
$newfilename = renamefile($ext);
uploadfile($tmp, $bucket, "user_docs/agency_".$agency_id."/brand_logos/", $newfilename, $s3);
header('Location: ./message.php?action=newlogo');
如果你认为die
不是正确的做法(肯定不是,这是一种非常糟糕的用户体验),那么你可以将你的条件放在一个函数中,该函数在失败时返回错误消息,在成功时返回false
:
function checkValid() {
if(!checkvalidfile("img",$ext)
return "Error message 1";
if(!checksize($size, 524288))
return "error message 2";
if(!checkdimensions($tmp, 300))
return "error message 3";
return false;
}
if ($error = checkValid()) {
echo $error;
} else {
$newfilename = renamefile($ext);
uploadfile($tmp, $bucket, "user_docs/agency_".$agency_id."/brand_logos/", $newfilename, $s3);
header('Location: ./message.php?action=newlogo');
}