调用多个PHP函数-最佳实践


Calling multiple PHP functions - best practice

我有一个图像上传表单,在上传文件之前,我会用它调用多个函数,例如检查大小、尺寸以及它是否是有效的图像。代码可以工作,但调用函数和处理结果似乎相当繁琐和复杂。

有没有一种更整洁的方式来构建代码。

这就是我目前拥有的:

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'); 
}