Что лучше всего использовать при использовании PHP и HTML?


Я уже некоторое время занимаюсь разработкой веб-сайтов, но есть одна вещь, в которой я никогда не был до конца уверен при использовании PHP и HTML. Лучше ли иметь весь документ на PHP и echoHTML примерно так:

<?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 и т. Д.

Author: PdC, 2010-11-10

8 answers

По этому поводу существуют разные мнения. Я думаю, что есть два хороших способа:

  • Используйте механизм создания шаблонов, такой как Smarty, который полностью разделяет код и представление.

  • Используйте свой второй пример, но при смешивании PHP с HTML только выходные переменные. Выполните всю логику кода в одном блоке, прежде чем выводить что-либо или отдельный файл. Вот так:

    <?php $content = doSomething();
       // complex calculations
    ?>
    <html>
    <body>
      <?php echo $content; ?>       
      <div id="some_div">Content</div>
    </body>
    </html>
    

Большинство полноценных фреймворков приложений имеют свои собственные стили делать это; в этом случае обычно лучше следовать предоставленному стилю.

 23
Author: Pekka 웃, 2010-11-10 19:10:16

Я думаю, что это будет зависеть от соглашения вашей группы или вашего собственного решения. И это может и должно варьироваться в зависимости от того, с каким типом файла вы работаете. Если вы следуете шаблону 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 или вернули его из метода, являющегося называемый. Предпочтительно вернуть его, чтобы его можно было выводить в любое время и в любом случае, как того пожелает разработчик.

 9
Author: sholsinger, 2010-11-10 19:17:36

Подсветка синтаксиса является важным преимуществом второго метода, как вы сказали. Но также, если вы следуете рекомендациям, в которых логика и представление разделены, вы, естественно, обнаружите, что ваши файлы, содержащие HTML, почти полностью являются HTML, что, естественно, снова приводит к вашему второму методу. Это стандарт для фреймворков MVC и тому подобного. У вас будет куча файлов, которые все являются PHP, выполняют логику, а затем, когда это будет сделано, они будут включать презентацию файл, который в основном представляет собой HTML с небольшим количеством PHP.

 3
Author: Tesserex, 2010-11-10 19:09:37

Просто:

Больше PHP - закрыть HTML в PHP. Когда вы генерируете HTML-код на PHP, когда вы делаете что-то вроде класса, поэтому лучше сделать это в echo.

Меньше PHP - закрыть PHP в HTML. Это все равно, что просто помещать переменные в поля HTML-файлов, таких как формы... И тому подобное.

 2
Author: Aurel Bílý, 2010-11-10 19:09:09

Если вы можете, используйте вместо этого механизм шаблонов.

Хотя поначалу немного проще смешивать HTML и PHP, их разделение значительно облегчает последующее обслуживание.

Я бы рекомендовал проверить Templatelite, который основан на Smarty, но немного легче.

 2
Author: Alan Geleynse, 2010-11-10 19:09:23

Лучший подход - отделить HTML от PHP, используя систему шаблонов или, по крайней мере, какой-то HTML-скелет, например:

<main>
    <header/>
    <top-nav/>
    <left-col>
        <body />
    </left-col>
    <right-col />
    <footer/>
</main>

Каждый узел представляет файл шаблона, например main.php, hrader.php и так далее. Чем вам нужно отделить PHP-код от шаблонов, как что-то вроде functions.php и, наконец, используйте свой второй подход для файлов шаблонов и очистки функций от "эхо" и HTML.

 2
Author: infinity, 2010-11-10 19:10:55

Это зависит от контекста. Если вы выводите много HTML-кода с атрибутами, вам надоест избегать кавычек в строках PHP. Однако также нет необходимости использовать ?><p><? вместо echo "<p>";. На самом деле это просто вопрос личного вкуса.

 0
Author: cdhowie, 2010-11-10 19:09:39

Второй метод - это то, что я обычно использую. И для меня это тоже был метод по умолчанию. Это просто удобно, чтобы заставить php работать внутри html, а не повторять html-код. Но мне пришлось изменить файл httpd.conf, так как мой сервер только что прокомментировал php-код.

 0
Author: Lloyd Francis, 2016-07-28 08:25:25