Создание шаблонов в php без использования шаблонизатора
Что-то в 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 ответа
Я бы порекомендовал использовать шаблонизатор для шаблонов (я рекомендую 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. Вы можете создать свой собственный, который работает для вас, но там уже есть несколько замечательных.
PHPLib (лицензия с открытым исходным кодом лицензии AFAIK GNU) имеет класс шаблона, который представляет собой один включаемый файл, он чрезвычайно легкий и простой в использовании:
Как вы указали, PHP сам по себе является движком шаблонов, и то, что вы хотите сделать, можно сделать с помощью простого оператора if.
Или вы можете создать функцию на этот счет, как, например, для тегов шаблонов WordPress.