Допустим, у меня есть 2 случая:
<?php print("html code goes here"); ?>
против
<?php ?> html codes goes here <?php ?>
Будет ли производительность для PHP-интерпретатора в первом случае хуже, чем вторая? (Из-за дополнительных накладных расходов на обработку внутри функции печати).
Итак, есть ли у кого-нибудь рекомендуемый способ вставки html-кодов внутри php-кодов?
Не делайте этого так! Используйте систему шаблонов, такую как Smarty, чтобы вы могли отделить свою логику от вашего отображаемого кода. Это также позволяет вам принести дизайнера, который может работать с html и вообще не знать php. Шаблоны Smarty больше читают HTML, чем PHP, и это может иметь большое значение при работе с дизайнером.
Кроме того, вам не нужно беспокоиться о том, что ваш дизайнер возится с вашим кодом при выполнении поиска / замены!
Лучше еще пойти на установку, такую как Django или Rails, которая имеет четко очерченную настройку кода / шаблона, но если вы не можете этого сделать (дешевые решения для хостинга), то, по крайней мере, используйте шаблоны. Я не знаю, является ли smarty лучшим для PHP, но оно намного лучше, чем оба решения, которые вы предлагаете.
О, ради всех тех, кто позже отредактирует ваш код, никогда не помещайте какой-либо значимый код HTML внутри строки и повторяйте его. На любом языке.
HTML принадлежит в HTML-файлах, отформатированных и стилизованных вашей IDE или редактором, чтобы их можно было прочитать. Гигантские строковые блоки являются самой большой причиной ошибок HTML, которые я когда-либо видел.
Производительность не должна быть слишком большой, в этом случае, но я бы предположил, что вторая будет быстрее, потому что она напрямую передается на выход или буфер.
Если вы хотите, чтобы его было легче читать, включите короткие теги и напишите его так:
?><b>blah blah blah</b><?
Кроме того, с включенными короткими тегами, легче вывести переменные:
Hello, <?= $username ?>
Если вы используете это для создания какой-либо библиотеки многократного использования, есть и другие варианты.
Вы должны поместить HTML вне кода PHP, чтобы улучшить обслуживание и масштабируемость. Также очень полезно выполнить всю необходимую обработку данных перед отображением любых данных, чтобы отделить логику и презентацию.
Вместо этого попробуйте подумать о постоянном разделении своих php и HTML, вместо этого вы должны быть в уме, отделяющем вашу логику бэкэнд и логику отображения.
Шаблон MVC – это хороший способ подумать о вашем коде. Чтобы правильно использовать PHP, вы должны использовать шаблон MVC (model-view-controller)
Никогда не помещайте HTML внутри кодов PHP, если вы специально не намереваетесь сделать это или его очень мало. Но опять же 100% разделение – это то, что я рекомендую. Людям придется очень много работать, чтобы понять ваш код позже, если вы их примете. Особенно дизайнеры, которым может не понравиться php.
Золотое правило – это разделение фронтального и заднего процесса на максимум помогает во всех аспектах. Держите вещи там, где они принадлежат. Стили в CSS, Java-скрипты в JS, Php в папке / файлах библиотеки и просто используйте требуемые классы / функции.
Использовать короткие теги <?
если требуется (но мне не нравится: P) также <?=
тег для выходного echo
. Кроме того, лучше избегать коротких тегов.
[над парапетами] Многие из нас изучили шаблоны из WordPress, где без встраивания php практически невозможно что-либо сделать. Я вполне понимаю, почему люди защищают строгий MVC или такие двигатели, как Smarty, но факт в том, что касается разработки WordPress, вам нужно манипулировать выводами «на лету» с помощью php. Фактически, исходя из этого фона, я всегда полагаю, что «hp» в php был именно по этой причине. Поэтому я мог бы написать «нормальный» HTML-код, немного обработать серверную обработку и вернуться в HTML.
Итак, с моей точки зрения, ответ на ваш вопрос – это второй из ваших примеров, который гораздо легче читать – одна из основ элегантного кодирования. Но это зависит. Если есть много обработки для создания простой части html, то может быть проще построить большую переменную и повторить ее в конце. Я задерживаю несколько строк выражений эха. В этом случае я, скорее всего, буду использовать функцию, чтобы мой HMTL был чистым. Снова WordPress делает это много; например, the_title()
возвращает простую строку, но выполняет the_title()
перед возвратом этой строки, поэтому <h1><? the_title(); ?> </h1>
<h1><? the_title(); ?> </h1>
<h1><? the_title(); ?> </h1>
хорошо читается.
Это POV разработчика WordPress, который никогда не формально преподавал сложное кодирование. Я ожидаю, что потеряю много очков репутации над этим ответом. [/ голова над парапетом]