У меня есть скрипт, который запускает кучу заданий и проверок, и когда все проходит, он вставляет и возвращает json в ajax-скрипт.
Теперь мой сценарий примерно такой
$response = "";
if (isset($_POST['upload'])){// some basic data// prevent duplicates
if($check_duplicates){
// create json error
$helper->error_duplicate($name);
}// some more data// run validation
$validation = $helper->validate_form();
// create json error if fails
if($!$validation){
$helper->error_validation();
}
// validate file
$valid_file = $helper->validate_file();
// create json error if fails
if($!$valid_file){
$helper->error_valid_file();
}// more data//execute the insert
$insert_db = $database->execute_statement($insert_array,$file_name,$cleanup=true);
// check if insert was successful
if(!$insert_db){
$response= array(
"result" => "Failure",
"title" => "Database Error",
"message" => "There was an error with the insert");
echo (json_encode($response));
}
if($response == ""){
$response= array(
"result" => "Success",
"title" => "Successful Insert",
"message" => "The insert was successful");
echo (json_encode($response));
}
}else{
$response= array(
"result" => "Failure",
"title" => "No Access Allow",
"message" => "This page is restricted");
echo (json_encode($response));
}
Теперь, если одна из более ранних проверок завершится неудачей, нет необходимости продолжать работу с остальной частью проверки и вставкой, но будет очень грязно иметь так много вложенных if. Я уверен, что это обычная ситуация, но я не уверен, что лучший способ справиться с этим. Есть у кого-нибудь какие-либо предложения или есть лучший способ отформатировать это.
if (!$check_duplicates) $helper->error_duplicate($name);
elseif (!$validation = $helper->validate_form()) $helper->error_validation();
elseif (!$valid_file = $helper->validate_file()) $helper->error_valid_file();
elseif (!$insert_db = $database->execute_statement($insert_array,$file_name,$cleanup=true))
echo json_encode(array(
"result" => "Failure",
"title" => "Database Error",
"message" => "There was an error with the insert"));
else
echo json_encode(array(
"result" => "Success",
"title" => "Successful Insert",
"message" => "The insert was successful"));
Других решений пока нет …