Посмотри на это:
<?php
echo "Hello World";
?>
<br />
<?php
echo "Welcome";
?>
А теперь посмотрим на это:
<?php
echo "Hello World";
echo "<br />";
echo "Welcome";
?>
Какой из приведенных выше примеров считается лучшим (по крайней мере, с точки зрения производительности)?
Я знаю, что примеры тривиальны, но я хочу с самого начала следовать привычным правилам, поэтому, когда у меня появляется все больше и больше строк, они не влияют на производительность или что-то негативное.
web-development
php
html
Рашедом
источник
источник
Ответы:
Как отмечается в комментарии, это должно быть сделано с помощью шаблонов. Но если только ваш выбор два возможен. Случай 1 будет лучше. Это та же концепция, что и в Android, раздувающей макет с помощью xml, или программно создающий пользовательский интерфейс. Ваш
<br/>
статический контент из вашего HTML, и все, что ваш сервер будет делать, это показывать его. Но если вы используете php, чтобы выполнить его, это будет использовать ресурсы ваших серверов и быть вычислительным.Вот как это должно быть сделано: index.php:
header.html и footer.html являются шаблонами.
источник
Чтобы прямо ответить на ваш вопрос: никогда не повторяйте статический текст или HTML. Оставьте это за пределами вашего PHP.
Выход из PHP - это пустая трата времени, если все, что вы собираетесь сделать, это передать статический текст или статический html. Весь код внутри
<?php ?>
отправляется на PHP для интерпретации. Это означает, что ваш веб-сайт работает медленнее, и вы тратите электроэнергию, если без всякой причины передаете в PHP большие объемы статического текста. (Иногда есть причина.)Лучше всего, чтобы ваша логика и грубость работали в файлах без HTML, только с PHP.
Мне нравится делать это с помощью MVC. У меня есть чистый PHP в моделях и контроллерах, и смесь HTML и PHP в представлениях. Вам не нужна инфраструктура MVC; Вы можете просто вставить свою смесь HTML в файлы шаблонов, которые затем включите в свои чистые файлы PHP.
Когда ваши переменные (которые не включают в себя HTML) созданы в чистых файлах PHP, вы можете передать их в файл с вашим HTML. Там, и только там, можно смешивать HTML и PHP. Но, и это важно, но при работе с файлами, имеющими HTML, PHP должен быть минимальным.
К счастью, PHP поставляется с дружественными инструментами, облегчающими чтение PHP при смешивании с html.
Альтернативный синтаксис
Лучшей практикой является использование обычного синтаксиса PHP при написании чистого PHP, но альтернативного синтаксиса при смешивании PHP и HTML.
В обычных файлах PHP без HTML:
Это прекрасно для чистого PHP, но не идеально при выходе из HTML. В частности, закрывающие скобки часто трудно понять, когда они появляются в больших кучах HTML.
Кажется, исходя из вашего вопроса, который вы написали бы в файле, смешивающем HTML и PHP, это:
По причинам, описанным выше, мы хотим, чтобы HTML не отправлялся в PHP. Мы делаем это так:
Мы получили наш HTML из наших тегов PHP, что является улучшением. Но мы могли бы пойти дальше.
Заметьте, насколько неинформативна закрывающая скобка? Мы не знаем, закрывает ли он цикл или оператор if. В приведенном выше примере это кажется тривиальным, но внутри if / endif внутри цикла / endloop часто бывают десятки строк HTML.
Лучшая практика заключается в том, что в файлах, смешивающих PHP и HTML, вы используете альтернативный синтаксис, в котором пропускаются открывающие и закрывающие скобки (
{ }
):Помимо семантики нового синтаксиса (
:
иendif;
вместо{
и}
), вы должны заметить две вещи:<?php ?>
тегов, поэтому они не интерпретируются. По причинам, описанным выше, это хорошо.<?php } ?>
), закрывающие вещи, которые трудно найти, где они открылись (потому что они смешаны с кучей грязно выглядящего HTML). Опять же, представьте большой HTML-файл с циклами и операторами if. Определение того, что вы закрываете, может многое прояснить.Тот же самый дружественный шаблону синтаксис может быть использован и для циклов:
Короткие метки
Еще один замечательный инструмент, предоставляемый PHP, который, опять же, вы хотите использовать только при смешивании PHP и HTML, это короткие теги. Возможно, вам придется включить короткие теги в файле php.ini. После включения короткие теги делают все еще более читабельным.
Без коротких тегов вы должны писать,
<?php echo $something; ?>
но с короткими тегами вы можете писать,<?=$something?>
и результат будет точно таким же.Комбинируя короткие теги и альтернативный синтаксис PHP, вы действительно можете написать несколько элегантных файлов HTML, которые включают элементы PHP. Взяв наш последний пример цикла (только часть внутри цикла), короткие теги позволяют нам уменьшить:
в
что гораздо более читабельно.
Можем ли мы пойти дальше? Да. Используя различные системы шаблонов, вы можете делать такие вещи, как:
Что удивительно читаемо. Системы шаблонов, однако, выходят за рамки первоначального вопроса (который я все равно оставил некоторое время назад).
источник
short_open_tag
директива будет всегда включена. PHP 5.4 делает<?=$thing?>
доступным все время, даже когдаshort_open_tag
отключено. Кроме того,short_open_tag
по умолчанию отключено, чтобы предотвратить конфликты с XML.<?php $foo='ABC'; echo '<div>', $foo, '</div>'
и<?php $foo='ABC'; ?><div><?=$foo?></div>
привести к точно таким же кодам операций, то есть они идентичны.<li>{$thing}</li>
как вы показали, с преимуществом перед двойными кавычками, что вам не нужно избегать двойных кавычек внутри него. Вы также можете назначить heredoc или передать его функциям, так что гораздо проще, чем php / html, если вы используете его в блоках, например.array_reduce($items, function($s, $item) { $name = htmlspecialchars($item['name']); return $s . <<< EOT <li>{$name}: {$item['price']}</li> EOT; })
Вы учитесь, забудьте о производительности на страницах PHP. Вместо этого выберите способ, который легче всего читать .
Глядя на ваши два примера, второй, безусловно, легче всего читать, хотя я думаю, что это из-за пробелов, которые вы использовали. Вы говорите, что хотите развить хорошие привычки с самого начала, я думаю, что ваше время может быть лучше потрачено на то, чтобы ваш код читался хорошо. Это может означать переписывание раздела несколько раз, пока вы не будете довольны им.
Если вы действительно заинтересованы в закулисной работе, я постараюсь объяснить, что происходит со статическим контентом на странице PHP. Одна из первых вещей - это «разобрать» всю страницу в исполняемый код (как вы видите между
<?php ?>
тегами). Одна часть этого состоит в том, чтобы превратить любой статический текст вecho
.Итак, это:
превращается в нечто вроде:
С анализом связаны очень небольшие затраты, но нет разницы в выполнении результирующего кода. Если вы используете PHP-ускоритель, анализ выполняется только один раз, а затем кэшируется, поэтому вы не увидите никакой разницы в производительности после загрузки первой страницы.
Помните: легко читать!
источник
echo
буквально», если вы подразумеваете это буквально (что подразумевает ваш язык). Результат тот же, но методы очень разные. То, что вы называете «статическим текстом», фактически переходит из PHP в HTML. Когда это происходит, сервер начинает отправлять необработанный текст. Он не анализирует его через PHP, как это было бы сecho
. Возможные последствия для производительности, вероятно, невелики в любых необдуманных обстоятельствах, но важна механистическая разница.Одной из лучших особенностей PHP было то, что он предназначен для встраивания в HTML. Обычно используется при создании шаблонов. Это делает ваш код легче для чтения и обслуживания, потому что он отделяет код PHP от HTML.
Но если вы печатаете только статическую страницу типа "Hello World!" это плохая идея
источник
Чтобы ответить на ваш вопрос просто: учитывая ваш пример кода, будет мало различий в производительности. PHP обрабатывается на уровне сервера / хоста, тогда как HTML обрабатывается агентом пользователя / человеком, который просматривает вашу веб-страницу в своем браузере. Кто будет быстрее? Сложно определить.
Я согласен с другими, говоря, что каждый из них имеет свои сильные и слабые стороны и может действительно хорошо работать вместе. PHP программируется и может выполнять вычисления и работать с переменными. По этой причине все мои страницы заканчиваются на PHP и вызывают фрагменты кода HTML - шаблоны, как было упомянуто, и вставляют переменные, чтобы мой HTML стал динамичным.
В вашем примере вы можете объединить HTML-код в один оператор PHP следующим образом:
Надеюсь, что это поможет немного прояснить.
источник
Существуют ограничения на использование HTML в PHP.
Большую часть времени у вас будет ваш HTML снаружи. Вы бы создали страницу так же, как если бы вы не использовали PHP, а затем добавили бы PHP в те области документа, где вам это нужно. Вы можете иметь несколько кусков PHP в документе.
источник
Обычно считается плохой формой выводить код HTML из PHP. Для этого есть несколько причин, но главная из них заключается в том, что проще, особенно в долгосрочной перспективе, поддерживать код, если код HTML и PHP разделен.
Это так же, как HTML, CSS и Javascript; просто гораздо проще и практичнее держать это отдельно.
Технически, однако, абсолютно не имеет значения, как вы выводите материал. Для PHP это всего лишь байты подряд.
источник
<?php echo 'hello'; ?>
передается в PHP.hello
не передается в PHP. Все, что передается в PHP, преобразуется в байт-код, а затем интерпретируется. Это требует времени, вычислительной мощности и электричества.