Я хочу условно выводить HTML для создания страницы, так что самый простой способ отобразить многострочные фрагменты HTML в PHP 4+? Нужно ли мне использовать структуру шаблонов, такую как Smarty?
echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
Ответы:
Есть несколько способов повторить HTML в PHP.
1. Между тегами PHP
2. В эхо
С эхом, если вы хотите использовать двойные кавычки в вашем HTML, вы должны использовать эхо в одинарных кавычках, например:
Или вы можете убежать от них так:
3. Heredocs
4. Nowdocs (начиная с PHP 5.3.0)
Механизмы шаблонов используются для использования PHP в документах, содержащих в основном HTML. Фактически, изначальной целью PHP было создание языка шаблонов. Вот почему с PHP вы можете использовать такие вещи, как короткие теги для вывода переменных (например
<?=$someVariable?>
).Существуют и другие механизмы шаблонов (например, Smarty, Twig и т. Д.), Которые делают синтаксис еще более кратким (например,
{{someVariable}}
).Основное преимущество использования механизма шаблонов - это отделение дизайна ( логики представления ) от кодирования ( бизнес-логики ). Это также делает код более чистым и легким в обслуживании в долгосрочной перспективе.
Если у вас есть еще вопросы, не стесняйтесь оставлять комментарии.
Дополнительную информацию по этим вопросам можно найти в документации PHP .
Примечание: PHP короткие теги
<?
и?>
не рекомендуется , потому что они доступны , только если включенаshort_open_tag
php.ini директивы файла конфигурации, или если PHP был сконфигурирован с--enable-short-tags
опцией. Они доступны независимо от настроек начиная с 5.4 .источник
<?=$var?>
. Использование коротких тегов, как обычно, не рекомендуется, и их следует удалить (<? doStuff() ?>
).Попробуйте это так ( синтаксис heredoc ):
источник
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
--- Так что я подумал, что не хватает нескольких скобок, и не был уверен, куда именно они пойдут. Всегда забавно получать ответы на мои чуть более старые комментарии, потому что тогда я был новичком во всем этом.Вы можете использовать альтернативный синтаксис альтернативного синтаксиса для структур управления и выйти из PHP:
источник
По сути, вы можете размещать HTML где угодно, кроме тегов PHP. Также очень полезно выполнить всю необходимую обработку данных перед отображением любых данных, чтобы разделить логику и представление.
Само отображение данных может быть внизу того же файла PHP, или вы можете включить отдельный файл PHP, состоящий в основном из HTML.
Я предпочитаю этот компактный стиль:
Примечание: вам может потребоваться использовать
<?php echo $var; ?>
вместо, в<?=$var?>
зависимости от настроек PHP.источник
Я неравнодушен к этому стилю:
Да, я использую теги в стиле ASP. На мой взгляд, смешение PHP и HTML выглядит очень легко читаемым. Хитрость заключается в том в получении
<%
и%>
маркеры раз.источник
Другой подход - поместить HTML в отдельный файл и в этом случае пометить область, которую нужно изменить, заполнителем [[content]]. (Вы также можете использовать sprintf вместо str_replace.)
В качестве альтернативы вы можете просто вывести все данные PHP на экран, захваченный в буфере, написать HTML и вернуть вывод PHP на страницу.
Может показаться странным написать PHP, поймать его, а затем написать снова, но это означает, что вы можете выполнять все виды форматирования ( heredoc и т. Д.) И правильно тестировать его вывод без хлопот со страницей. шаблон мешает. ( CMS Joomla делает это таким образом, кстати.)
То есть:
источник
Просто используйте функцию печати, чтобы отобразить текст в файле PHP следующим образом:
источник
источник
В дополнение к ответу Криса Б. , если вам
echo
все равно нужно использовать, все же вы хотите, чтобы он был простым и структурированным и не хотите спамить код с помощью<?php stuff; ?>
's, вы можете использовать синтаксис ниже.Например, вы хотите отобразить изображения галереи:
Echo принимает несколько параметров, поэтому с хорошим отступом выглядит неплохо. Кроме того, использование
echo
с параметрами более эффективно, чем объединение.источник
или
источник
Попробуй это:
источник
Не повторяйте HTML.
Если вы хотите использовать
вы должны делать это:
источник
Вот как я это делаю:
источник