Создание шаблонов в php без использования шаблонизатора - PullRequest
0 голосов
/ 13 мая 2011

Что-то в PHP, я хочу отображать содержимое, если определенная переменная существует.

Например, для текущего комментария я хочу проверить, проголосовал ли автор уже по этому ответу, поэтому код будетчто-то вроде следующего:

<?php if (isset($replies)): ?>
    <?php foreach ($replies as $reply): ?>

        <?php if (isset($already_voted)): ?>
            <?php foreach ($already_voted as $vote): ?>

            // if vote['id'] == $reply['id'], echo what they have already voted

            <?php endforeach; ?>
        <?php endif; ?>

    <?php endforeach; ?>
<?php endif; ?>

Что может быть проще, если бы не использовать раздутый шаблонизатор, такой как smarty?

(Пожалуйста, никаких комментариев по поводу ... да, «PHP - это по сути шаблонизатор» или что-то в этом роде).

Ответы [ 3 ]

2 голосов
/ 13 мая 2011

Я бы порекомендовал использовать шаблонизатор для шаблонов (я рекомендую PHPTAL), но вы очень конкретно попросили способ не использовать движок. Вы можете упростить имеющийся у вас php-код, просто не взламывая его так много:

<?php
if (isset($replies)) {
   foreach ($replies as $reply) {

      if (isset($already_voted)) {
         foreach ($already_voted as $vote) {

    // if vote['id'] == $reply['id'], echo what they have already voted

         }
      }

   }
}

Конечно, это практически то же самое, что и у вас, просто используется меньше символов. Отслеживать открытые блоки кода с помощью отступов.

Обратите внимание, что точка шаблона, по крайней мере, насколько я понимаю, повторное использование. Вы хотите иметь возможность использовать один и тот же шаблон или хотя бы части шаблона (например, макросы) на максимально возможном количестве страниц. Для некоторого статического контента это не всегда возможно, но именно поэтому ключевыми словами являются , насколько это возможно . Как и в случае с любым другим кодом, используйте то, что можете.

Использование системы шаблонов облегчает отделение представления от логики. Вы можете создавать шаблоны php (как вы это сделали), но я думаю, что в этом нет ясности, и гораздо проще выполнять обработку внутри шаблона, чем раньше. Также сложнее создавать повторно используемые шаблоны без какой-либо системы в php. Вы можете создать свое собственное, которое работает для вас, но уже есть некоторые замечательные.

1 голос
/ 13 мая 2011

PHPLib (лицензия с открытым исходным кодом лицензии AFAIK GNU) имеет класс шаблона, который представляет собой один включаемый файл и является чрезвычайно легким и простым в использовании:

http://www.sanisoft.com/phplib/manual/TemplateExamples.php

0 голосов
/ 13 мая 2011

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

Или вы можете создать такую ​​функцию, как, например, для тегов шаблонов WordPress.

...