php andif заявление, провалиться

С риском обвинить себя в кости, я все еще задаю вопрос:
Есть ли что-то вроде «andif» в php или как я могу решить ниже элегантно?

Сценарий: первый тест, если true, выполнить некоторую обработку (например, сервер контактов), затем выполнить второй тест, сделать что-то … провести третий тест, а затем выполнить результат или — если что-либо из вышеперечисленного не удалось — всегда вывести тот же провал.

Вместо того, чтобы повторять оператор else каждый раз …

if ( ....) {
contact server ...
if (  ...  ){
check ...
if (  ... )   {
success  ;
} else {  failure ...       }
} else {  failure ...       }
} else {  failure ...       }

.. Я ищу что-то подобное:

if ( ...) {
do something...
andif ( test ) {
do something more ...
andif ( test) {
do }
else {
collective error }

В функции я могу использовать симуляцию «провала» с возвратом в случае успеха:

function xx {
if {... if {... if {...  success; return; }}}
failure
}

.. а в основной программе?

1

Решение

Нет никаких andif оператор в PHP, но вы могли бы использовать идиому раннего возврата (или «fast-fast») и возвращать сбой всякий раз, когда тест не пройден. Таким образом, вам не нужно кучу elses:

function xx {
if (!test1) {
return failure;
}

someProcessing();
if (!test2) {
return failure;
}

// Etc...

return success;
}
0

Другие решения

Я бы сначала проверил ошибки:

if (not_true) {
return;
}

connect_server;

if (second_not_true) {
return;
}

check;

И так далее…

Вы также можете сделать несколько проверок в одном if заявление с логические операторы. Например :

if (test && second_test && third_test) { // means if test is true and if second_test is true and if third_test is true
// do the stuff if success...
} else {
// do the stuff if errors...
}
0

ну, поскольку в php нет такого понятия, как andif, я думаю, что единственный способ сделать это — задержать дыхание:
ИДТИ К
(извините за испорченное рождество …)

   if  ( ....) {
contact server ...
if (  ...  ){
check ...
if (  ... )   {
success  ;
goto success;
}}}
failure;
success:
continue...

все остальное мне кажется сложнее.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector