почему <? php и?> на каждой строке

<p>я видел это соглашение почти везде, и иногда оно почти сводило меня с ума:</p><pre><code><?php //the loop ?> <?php while ( have\_posts() ) : the\_post(); ?> <?php the\_content(); ?> <?php endwhile; // end of the loop. ?> </code></pre><p>где <code><?php</code> и закрывающий <code>?></code> находятся в каждой строке, даже если нет промежуточного html-кода.</p><p><strong> мой вопрос: почему? </strong>зачем включать все эти дополнительные теги?</p><p>мне кажется, что это соглашение добавляет значительное количество беспорядка к коду, раздражает в первую очередь следовать и добавляет еще много мест, чтобы случайно пропустить открывающий или закрывающий тег.</p><p><strong>нота</strong></p><p>этот код взят из темы "двадцать двенадцать", пример, приведенный в wordpress.</p>

<p>это не рекомендуется в любом руководстве по стилю wordpress, и я думаю, что это плохой стиль кодирования. новички используют этот стиль, возможно потому, что он больше похож на html…</p><p>к сожалению, темы по умолчанию используют этот стиль слишком часто, поэтому некоторые новички могут подумать, что это часть стиля кода.</p><p>одним из недостатков этого стиля является обработка комментариев. посмотрите внимательно на следующий пример, и как он не делает то, что может ожидать автор:</p><pre><code><?php echo 'important: '; // announcement ?> <?php echo ' enter the word '; /* start ?> <?php echo '<b>password</b>'; /* the end */ ?> </code></pre><p>удачи в отладке этого. :)</p><p>правило: переключайтесь между php и контекстом html, только если вам нужно создать вывод на обоих языках. используйте регулярные переносы строк во всех остальных случаях.</p><p><strong> обновление, дальнейшие размышления: </strong>каждый действительный файл html представляет собой законченную и действительную php программу. да, даже если он не содержит ни одной строки фактического кода php.</p><p>если вы начинаете с html и добавляете небольшие кусочки php шаг за шагом ... вы можете в конечном итоге использовать стиль, который мы обсуждаем здесь. вот где<strong> рефакторинг </strong>входит в игру: как только все будет работать, как ожидается, переписать код, пока он не станет максимально читабельным, простым в обслуживании и расширении, без повторяющихся частей.</p><p>я думаю, что некоторые люди счастливы без этого последнего шага, и поэтому это не умрет в ближайшее время.</p>

<p>хотя я избегаю этого для php комментариев, я заядлый php новичок/ближе в файлах шаблонов. альтернатива заключается в отображении html через строки php, что, на мой взгляд, выглядит еще хуже. в качестве примитивного примера:</p><pre><code><!-- 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> </code></pre><p>пример 2 более многословен? может быть? но проще читать и редактировать, на мой взгляд. вы можете себе представить, насколько уродливым он может стать для сложного html.</p><p>также, как примечание: использование <code>endforeach</code> и <code>endif</code> при записи html между вашей логикой php повышает удобочитаемость на<em> ton </em>по сравнению с <code>}</code>.</p>

<p>это о выборе между просмотром страницы как:</p><ul> <li>как полностью сгенерированный php объект</li> <li>как шаблон документа html, работает на основе тегов php</li> </ul><p>разные люди склонны думать об этом по-разному. обратите внимание, что функции редко используют этот стиль, потому что они больше похожи на блок чистого php. с другой стороны, это не редкость в шаблонах, потому что они более распространены по файлам, и количество чистого html может быть легко больше, чем количество php в них.</p><p>если вы посмотрите на движки шаблонов (mustache, twig и т.д.) - они очень похожи на этот стиль, за исключением того, что их синтаксис имеет тенденцию устранять многословность простого php.</p><p>ps хочу заметить, что я имею в виду<em> вменяемый </em>встраивание php в html, а не<em> буквально </em>открывающие и заканчивающие теги в<em> каждой </em>строке только ради этого ,.</p>

<blockquote> <p>мой вопрос: почему? зачем включать все эти дополнительные теги?</p> </blockquote><p>ответ довольно прост: аудитория. когда люди (не программисты) берут тему, тогда ftp загружает их установку, запускает настройку 5 минут и так далее, уже похоже на программирование для них. когда они захотят добавить или изменить одну строку<em> что угодно </em>в своей теме, тогда они, возможно, уже выяснили, что такое html. php по-прежнему будет за пределами их досягаемости. поэтому я предполагаю, что идея заключается в том, чтобы упростить добавление или удаление элементов, не нарушая ничего, когда они совершают ошибку.</p><p>примечание: это не то, что я люблю, предпочитаю или рекомендую. это то, что я думаю, почему это происходит.</p>

<p>я обнаружил, что некоторые новые программисты обучаются таким образом. я прохожу 40-часовой курс по линде, и инструктор сбрасывает теги php в каждой строке, за исключением определений функций. вероятно, он четко рисует линии между html и php, что, вероятно, помогает новым людям понять, где заканчивается html и начинается php. после этого это, вероятно, привычка. я сам начинал раздражаться и решил посмотреть, жалуется ли кто-нибудь еще.</p>