Язык программирования PHP

         

Шаблоны подстановки


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

Нужно придумать шаблон для этой страницы и где-то его хранить (в файле или в базе данных). Очевидно, что мы не можем придумать шаблон для всей страницы, потому что не знаем, сколько статей в базе данных. В шаблоне же мы договорились использовать только html и метасимволы <!имя элемента>. Поэтому мы можем написать только шаблон для одной строки списка, который уже программно надо преобразовать в нужное количество строк.

<li><a href="<!fulltext>" target=new><!title></a> (<!author>)<br><p><!abstract></p>

Кроме того, здесь есть еще одна загвоздка - с отображением ссылки на полный текст статьи. Если мы будем действовать по правилу подстановки (менять все метасимволы на их значения из базы данных), то может получиться, что вместо <!fulltext> вставим не ссылку на текст, а сам текст. То есть для этого элемента нужна дополнительная проверка перед заменой и какие-то дополнительные действия в случае, если в поле fulltext содержится текст статьи, а не ссылка на файл. Не будем усложнять себе жизнь и договоримся, что в поле fulltext всегда содержится только ссылка на файл. Тогда задачу можно решить следующим образом:

<? $li_tmpl = file_get_contents("tmpl.html"); // считываем шаблон строки из файла // устанавливаем соединение и выбираем // базу данных $conn = mysql_connect("localhost", "nina","123") or die("Cant connect"); mysql_select_db("book"); $sql = "SELECT * FROM Articles"; $q = mysql_query($sql,$conn); // отправляем запрос $num = mysql_num_rows($q); for($i=0; $i<$num; $i++){ $tmpl .= $li_tmpl; $tmpl = str_replace("<!title>", mysql_result($q,$i,"title"),$tmpl); $tmpl = str_replace("<!author>", mysql_result($q,$i,"author"),$tmpl); $tmpl = str_replace("<!abstract>", mysql_result($q,$i,"abstract"),$tmpl); $tmpl = str_replace("<!fulltext>", mysql_result($q,$i,"fulltext"),$tmpl); } echo $tmpl; ?>


Если шаблон был такой, как приведен выше, то получим примерно следующее.

1.2.
Введение в PHP (Савельева Н.В.)
Лекция дает представление о том, что такое язык PHP, для чего он создавался изначально и как используется теперь, какими возможностями обладает.
Установка и настройка ПО (Иванов Иван)
Рекомендации по установке и настройке web-сервера и интерпретатора PHP
В принципе метод достаточно прост и удобен, но требует дополнительных усилий программиста при возникновении задач более сложных, чем простая подстановка значений. Для решения задач, где требуется делать подстановку целых блоков или даже проверять условия, создают классы шаблонов, такие как FastTemplate и Smarty. Обсудим их подробнее.


Содержание раздела