Плохо ли иметь слишком много вложенных PHP-операторов if? - PullRequest
1 голос
/ 30 июня 2011

Прямо сейчас у меня есть что-то вроде этого:

<?php if ( ! is_front_page() ) : ?>
    <?php if ( $count >= 1 ) : ?>
        <?php if ( $count == 1 ) : ?>
            <h2 class="dark-title"><?php _e( 'Top Reply (Latest)' ); ?></h2>
        <?php else : ?>
            <h2 class="dark-title"><?php _e( 'Top Replies (Latest)' ); ?></h2>
        <?php endif; ?>
    <?php endif; ?>
<?php endif; ?>

Есть 3 вложенных оператора if, которые я хотел бы знать, если это плохая практика. Если это так, как я могу очистить этот код?

Ответы [ 4 ]

2 голосов
/ 30 июня 2011

Это если условия очень простые и их больше нет.

Кроме того, открытие бесполезных <?php инструкций по обработке и использование необычной формы endif вместо фигурных скобок определенно не рекомендуется.Вместо этого напишите:

<?php
if (!is_front_page() && ($count >= 1)) {
    echo '<h2 class="dark-title">';
    echo _e(($count==1) ? 'Top Reply (Latest)' : 'Top Replies (Latest)');
    echo '</h2>';
}
?>
1 голос
/ 30 июня 2011

Конечно, плохая идея повторять разметку .Если вы хотите что-то изменить, например, добавить класс, вы должны сделать это в двух местах.

В некоторых случаях, когда вы просто хотите присвоить значение на основе условия, вы можете использовать троичный оператор (condition ? iftrue : iffalse), просто никогда не вкладывайте его.

<?php if ( ! is_front_page() && $count >= 1  ) : ?>
    <h2 class="dark-title">
         <?php _e( $count == 1 ? 'Top Reply (Latest)' : 'Top Replies (Latest)' ); ?>
    </h2>
<?php endif; ?>
1 голос
/ 30 июня 2011

... если вам нужно более 3 уровней отступа, ты ввернут ... - Линус Торвальдс

Хорошо, что ты сделал. В общем, в первую очередь вы должны заботиться о том, чтобы ваш код читался, а не о том, сколько уровней вложенности вы используете.

0 голосов
/ 30 июня 2011

Это довольно часто.Если вы хотите очистить код, переработайте вещи в отдельные функции / методы.В вашем конкретном случае вы также можете избавиться от одного вложения, выполнив if ($ count == 1) и затем elseif ($ count> 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...