it-swarm.com.ru

Почему <? Php и?> На каждой строке

Я видел это соглашение почти везде, и иногда оно почти сводило меня с ума:

<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

Где <?php и закрывающий ?> находятся в каждой строке, даже если нет промежуточного HTML-кода.

Мой вопрос: почему? Зачем включать все эти дополнительные теги?

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

НОТА

Этот код взят из темы "Двадцать двенадцать", пример, приведенный в WordPress.

24
Indigenuity

Это не рекомендуется в любом руководстве по стилю WordPress, и я думаю, что это плохой стиль кодирования. Новички используют этот стиль, возможно потому, что он больше похож на HTML…

К сожалению, темы по умолчанию используют этот стиль слишком часто, поэтому некоторые новички могут подумать, что это часть стиля кода.

Одним из недостатков этого стиля является обработка комментариев. Посмотрите внимательно на следующий пример, и как он не делает то, что может ожидать автор:

<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the Word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>

Удачи в отладке этого. :)

Правило: переключайтесь между PHP и ​​контекстом HTML, только если вам нужно создать вывод на обоих языках. Используйте регулярные переносы строк во всех остальных случаях.

Обновление, дальнейшие размышления: Каждый действительный файл HTML представляет собой законченную и действительную PHP программу. Да, даже если он не содержит ни одной строки фактического кода PHP.

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

Я думаю, что некоторые люди счастливы без этого последнего шага, и поэтому это не умрет в ближайшее время.

20
fuxia

Хотя я избегаю этого для PHP комментариев, я заядлый PHP новичок/ближе в файлах шаблонов. Альтернатива заключается в отображении HTML через строки PHP, что, на мой взгляд, выглядит еще хуже. В качестве примитивного примера:

<!-- Example 1 -->
<ul>
    <?php
        foreach ( $list_items as $list_item ) {
            echo "<li><a href='" . $list_item->url . "'>" . $list_item->name . "</a></li>";
        }
    ?>
</ul>

<!-- Example 2 -->
<ul>
    <?php foreach ( $list_items as $list_item ) : ?>
        <li>
            <a href="<?php echo $list_item->url; ?>">
                <?php echo $list_item->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>

Пример 2 более многословен? Может быть? Но проще читать и редактировать, на мой взгляд. Вы можете себе представить, насколько уродливым он может стать для сложного HTML.

Также, как примечание: использование endforeach и endif при записи HTML между вашей логикой PHP повышает удобочитаемость на ton по сравнению с }.

12
Andy Adams

Это о выборе между просмотром страницы как:

  • как полностью сгенерированный PHP объект
  • как шаблон документа HTML, работает на основе тегов PHP

Разные люди склонны думать об этом по-разному. Обратите внимание, что функции редко используют этот стиль, потому что они больше похожи на блок чистого PHP. С другой стороны, это не редкость в шаблонах, потому что они более распространены по файлам, и количество чистого HTML может быть легко больше, чем количество PHP в них.

Если вы посмотрите на движки шаблонов (Mustache, Twig и т.д.) - они очень похожи на этот стиль, за исключением того, что их синтаксис имеет тенденцию устранять многословность простого PHP.

PS Хочу заметить, что я имею в виду вменяемый встраивание PHP в HTML, а не буквально открывающие и заканчивающие теги в каждой строке только ради этого ,.

10
Rarst

Мой вопрос: почему? Зачем включать все эти дополнительные теги?

Ответ довольно прост: аудитория. Когда люди (не программисты) берут тему, тогда FTP загружает их установку, запускает настройку 5 минут и так далее, уже похоже на программирование для них. Когда они захотят добавить или изменить одну строку что угодно в своей теме, тогда они, возможно, уже выяснили, что такое HTML. PHP по-прежнему будет за пределами их досягаемости. Поэтому я предполагаю, что идея заключается в том, чтобы упростить добавление или удаление элементов, не нарушая ничего, когда они совершают ошибку.

Примечание: это не то, что я люблю, предпочитаю или рекомендую. Это то, что я думаю, почему это происходит.

2
kaiser

Я обнаружил, что некоторые новые программисты обучаются таким образом. Я прохожу 40-часовой курс по Линде, и инструктор сбрасывает теги PHP в каждой строке, за исключением определений функций. Вероятно, он четко рисует линии между HTML и PHP, что, вероятно, помогает новым людям понять, где заканчивается HTML и начинается PHP. После этого это, вероятно, привычка. Я сам начинал раздражаться и решил посмотреть, жалуется ли кто-нибудь еще.

0
Kitt Parker