Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
тель. В этих языках подобъект класса-интерфейса IMysql содержится прямо внут- 

ри объекта MysqlTable, и указатель на него можно получить либо посредством 
явных преобразований типов, либо с помощью специальных функций для "отпочко- 
вывания" интерфейса. Например, в COM+ эти функции часто называют 
QueryInterface(). Здесь же у нас вышло нечто вроде примитивной поддержки 

Глава 31. Объектно-ориентированное программирование на PHP 485 
указателей (ведь объект класса IMysql именно указывает на "хозяина" типа 
MysqlTable, но не содержит его в себе!), которых в PHP нет. 
Правда, получилось все это несколько неказисто (уж очень некрасивы и одинаковы 
функции переадресации...), зато механизм действительно работает и решает все 
по- 
ставленные задачи. 

Глава 32 
Почтовые 
шаблоны 
В главе 20 мы уже обсуждали задачу создания универсальной функции для рассылки 
писем из PHP-сценария. Если вы помните, мы хотели назвать ее PostMail() и "нау- 

чить" перекодировать письма в нужную кодировку перед их отсылкой, а также вы- 
полнять функции небольшого шаблонизатора. В этой главе мы детально рассмотрим, 
как может быть устроена такая функция. 
Мини-шаблонизатор 
Конечно, пользователю будет приятно, если письмо (пусть даже и сгенерированное 
программой) будет адресовано ему лично. Например, в поле From содержится фами- 
лия и имя клиента, а первые строки текста звучат как-нибудь вроде: "Уважаемый 
ФИО!". Так что нам придется формировать текст письма "на лету" — проставлять в 
нем нужное имя, фамилию, тему и т. д. по общему шаблону. 
В идеале такой шаблон должен ничем не отличаться от небольшого PHP-сценария с 
тэгами  и возможностью использования команды echo или print, не говоря 
уж о всех остальных инструкциях. Но вот беда: как нам этот самый шаблон 
"развер- 
нуть", превратить в письмо-строку, которую потом мы будем посылать по почте? 
Пусть, например, у нас есть следующий шаблон письма (разделителем заголовков и 
тела письма служит маркер ~StartOfMail, обрабатываемый функцией 
PostMail()): 
To: "" <> 
Subject:  
~StartOfMail 
Дорогой ! 
Только что Вы подписались на наш лист рассылки. 
Пожалуйста, подтвердите свое желание получать новости нашего сайта. 
Если бы мы писали сценарии на PHP версии 3, задача обработки такого шаблона бы- 

ла бы практически невыполнимой. К счастью, при использовании PHP версии 4 все 
проще: в нем имеются функции "перехвата" стандартного выходного потока (о них 
мы уже говорили в главе 30 ). 

Глава 32. Почтовые шаблоны 487 
Давайте начнем проектирование функции PostMail() с написания своеобразного 
"мини-шаблонизатора" — функции, которая умеет "разворачивать" шаблоны наподо- 
бие приведенного выше, возвращая окончательный текст. Назовем ее, к примеру, 
ExpandTemplate() (листинг 32.1). Думаю, будет целесообразно вынести данную 
функцию в отдельную библиотеку, потому что она достаточно универсальна для это- 

го. 
Листинг 32.1. Функции обработки шаблонов: Minitemplate.phl 

		
 
<<-[Весь Текст]
Страница: из 287
 <<-