2013-11-20 4 views
0

У меня есть форма загрузки изображения, с которой я вызываю несколько функций перед загрузкой файла, например, проверку размера, размеров и правильного изображения. Код работает, но вызов функций и рассмотрение результатов кажется довольно громоздким и сложным.Вызов нескольких функций PHP - лучшая практика

Есть ли более аккуратный способ структурирования кода.

Это то, что я в настоящее время:

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; 
} 
+0

Не в теме. Попробуйте http://codereview.stackexchange.com – meagar

+0

это более подходит для codereview.stackexchange.com –

+4

Этот вопрос не соответствует теме, потому что это запрос на проверку кода. Это лучше подходит для http://codereview.stackexchange.com –

ответ

1

Там нет необходимости else поскольку вы die ING. Отрицание ваших условий с ! и unnest их всех:

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'); 
} 
Смежные вопросы