Что лучше всего использовать при использовании PHP и HTML?
Я уже некоторое время занимаюсь разработкой веб-сайтов, но есть одна вещь, в которой я никогда не был до конца уверен при использовании PHP и HTML. Лучше ли иметь весь документ на PHP и echo
HTML примерно так:
<?php
doSomething();
echo "<div id=\"some_div\">Content</div>";
?>
Или создайте такой HTML-файл и просто добавьте в PHP:
<html>
<body>
<?php doSomething(); ?>
<div id="some_div">Content</div>
</body>
</html>
Кажется более аккуратным echo
HTML, особенно если на странице используется много PHP, но при этом теряется все форматирование HTML, т.Е. Цвета в IDE и т. Д.
8 answers
По этому поводу существуют разные мнения. Я думаю, что есть два хороших способа:
Используйте механизм создания шаблонов, такой как Smarty, который полностью разделяет код и представление.
-
Используйте свой второй пример, но при смешивании PHP с HTML только выходные переменные. Выполните всю логику кода в одном блоке, прежде чем выводить что-либо или отдельный файл. Вот так:
<?php $content = doSomething(); // complex calculations ?> <html> <body> <?php echo $content; ?> <div id="some_div">Content</div> </body> </html>
Большинство полноценных фреймворков приложений имеют свои собственные стили делать это; в этом случае обычно лучше следовать предоставленному стилю.
Я думаю, что это будет зависеть от соглашения вашей группы или вашего собственного решения. И это может и должно варьироваться в зависимости от того, с каким типом файла вы работаете. Если вы следуете шаблону MVC, то ваши взгляды должны быть последними. Если вы пишете класс или какой-то не выводимый скрипт/код, то вам следует использовать первый.
Постарайтесь сохранить разделение отображения или форматирования вывода и логики, предоставляющей данные. Например, допустим, вам нужно сделать быструю страницу, которая выполняет простой запрос и выводит некоторые данные. В этом случае (когда нет другой существующей инфраструктуры или инфраструктуры) вы можете поместить логику во включаемый файл или в верхнюю или нижнюю часть файла. Пример:
<?php
# define some functions here that provide data in a raw format
?>
<html>
<body>
<?php foreach($foo = data_function($some_parameter) as $key => $value): ?>
<p>
<?=$value;?>
</p>
<?php endforeach; ?>
</body>
</html>
Или вы можете поместить определения логики и функций во включаемый файл или в нижней части файла.
Теперь, если вы создаете какой-то класс, у которого есть выходные данные ( это действительно не должно ), тогда вы бы повторили HTML или вернули его из метода, являющегося называемый. Предпочтительно вернуть его, чтобы его можно было выводить в любое время и в любом случае, как того пожелает разработчик.
Подсветка синтаксиса является важным преимуществом второго метода, как вы сказали. Но также, если вы следуете рекомендациям, в которых логика и представление разделены, вы, естественно, обнаружите, что ваши файлы, содержащие HTML, почти полностью являются HTML, что, естественно, снова приводит к вашему второму методу. Это стандарт для фреймворков MVC и тому подобного. У вас будет куча файлов, которые все являются PHP, выполняют логику, а затем, когда это будет сделано, они будут включать презентацию файл, который в основном представляет собой HTML с небольшим количеством PHP.
Просто:
Больше PHP - закрыть HTML в PHP. Когда вы генерируете HTML-код на PHP, когда вы делаете что-то вроде класса, поэтому лучше сделать это в echo.
Меньше PHP - закрыть PHP в HTML. Это все равно, что просто помещать переменные в поля HTML-файлов, таких как формы... И тому подобное.
Если вы можете, используйте вместо этого механизм шаблонов.
Хотя поначалу немного проще смешивать HTML и PHP, их разделение значительно облегчает последующее обслуживание.
Я бы рекомендовал проверить Templatelite, который основан на Smarty, но немного легче.
Лучший подход - отделить HTML от PHP, используя систему шаблонов или, по крайней мере, какой-то HTML-скелет, например:
<main>
<header/>
<top-nav/>
<left-col>
<body />
</left-col>
<right-col />
<footer/>
</main>
Каждый узел представляет файл шаблона, например main.php, hrader.php и так далее. Чем вам нужно отделить PHP-код от шаблонов, как что-то вроде functions.php и, наконец, используйте свой второй подход для файлов шаблонов и очистки функций от "эхо" и HTML.
Это зависит от контекста. Если вы выводите много HTML-кода с атрибутами, вам надоест избегать кавычек в строках PHP. Однако также нет необходимости использовать ?><p><?
вместо echo "<p>";
. На самом деле это просто вопрос личного вкуса.
Второй метод - это то, что я обычно использую. И для меня это тоже был метод по умолчанию. Это просто удобно, чтобы заставить php работать внутри html, а не повторять html-код. Но мне пришлось изменить файл httpd.conf, так как мой сервер только что прокомментировал php-код.