Предположим, что я создаю регистрационную форму. У меня есть код, как показано ниже, и его трудно справиться из-за всех вложенных операторов if.PHP - Избегайте вложенных операторов if - более чистый способ кодирования этого
Я хочу знать, как самый чистый и простой способ написать код, который функционирует аналогично тому, что у меня ниже.
EDIT: Люди сказали мне, что я могу перемещать пустой ($ _ POST ['email']) в функции проверки. Я не могу этого сделать, потому что мне нужно знать: 1) независимо от того, опубликовал ли пользователь данные или нет, и 2) достоверен ли пользователь данных.
Например, когда пользователь сначала отправляется на страницу регистрации, они не размещают никаких данных, поэтому $ _POST ['email'] генерирует предупреждения PHP, потому что их не существует. Вот почему я проверяю, были ли данные отправлены до проверки.
Имеет ли это смысл?
function validate_email($str) {
$str = trim(strtolower($str));
if(!filter_var($str, FILTER_VALIDATE_EMAIL)) {
return false;
} else {
return $str;
}
}
function validate_password($str) {
$str = trim($str);
if(strlen($str) < 5 || strlen($str) > 70) {
return false;
} else {
return $str;
}
}
$email = false;
$password = false;
$errorMessage = false;
if(!empty($_POST['email'])) {
$email = validate_email($_POST['email']);
if($email) {
if(!empty($_POST['password'])) {
$password = validate_password($_POST['password']);
if($password) {
createNewUser($email,$password);
} else {
$errorMessage = "The password is not valid";
}
} else {
$errorMessage = "The password is not valid";
}
} else {
$errorMessage = "Email address is invalid";
}
} else {
$errorMessage = "Email address is invalid";
}
if($errorMessage) echo $errorMessage;
Theres ничего действительно плохого в том, что не может быть аккуратным способом, но это, вероятно, не будет так быстро – Adam
это не нравится скорость любой вопрос с таким кодом. Единственная реальная проблема здесь - читаемость. – Femaref
@AdamTester Код, поддерживаемый, имеет гораздо более высокий приоритет, чем небольшой выигрыш в скорости. Который, вероятно, не будет заметен. – Bart