Мухи отдельно, визуализация отдельно

Статьи -> Программирование -> Web

Мухи отдельно, визуализация отдельно.

v:1.0 2009.09.12

Большинство средних и больших успешно действующих программных систем реализованы по принципу: логика отдельно, визуализация отдельно. Т.е. получается как бы два уровня иерархии. На нижнем уровне - функции и классы, реализующие логику работы программы, например, создание объектов, взаимодействие с внешними системами, работа с базой данных и т.д. На верхнем уровне реализуются программные модули, отвечающие за графическое представление того, что делается на нижнем уровне. Реализация этой идеи может быть разная. Например, классы описывающие логику и расположены в одном пространстве имен, визуализация в другом или функции логики в одном файле, а визуализации в другом или более сложные примеры, когда логика реализуется на промышленных контроллерах, а визуализация на компьютерах. Конкретные технологии значения не имеют, суть в отделении одного от другого.

    Такой подход имеет массу преимуществ:
  • Упрощаются процессы коллективной разработки. В простейшем случае один реализует логику - другой визуализацию.
  • Упрощаются процессы последующей поддержки и модернизации приложения. Т.к. системы состоит как минимум из двух модулей, управляться с ней становится на много проще. В крайнем случае, визуализацию или логику можно реализовать на другой технологии, сохранив только интерфейсы обмена.
Почему бы не применить этот подход и в разработке Web-Приложений? Причем в разработке как крупных коммерческих систем, так и домашних сайтов и персональных страниц "имени меня".

Предлагаю вашему вниманию одно из таких средств разделения: шаблонизатор Smarty. Вот выдержка из Википедии.

Smarty - компилирующий обработчик шаблонов для PHP, один из инструментов, позволяющих отделить прикладную логику и данные от представления в духе концепции Model-view-controller.

Например, создаётся страница, которая показывает газетную статью. Название статьи, автор и сама статья - элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения, а верстальщик шаблона редактирует шаблоны и использует комбинацию тегов HTML и тегов шаблона, чтобы отформатировать представление этих элементов (таблицы HTML, фоновые цвета, размеры шрифта, стиля и т. д.). Однажды программист захочет изменить способ хранения статьи (сделать изменения в логике приложения). Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом. Аналогично, если верстальщик захочет полностью перепроектировать шаблоны, это не потребует никаких изменений в прикладной логике.

Одно из предназначений Smarty - это отделение логики приложения от представления. Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т. д. - всё это является примером логики представления. Не следует думать, что Smarty заставляет разделять логику приложения и представление. Smarty не видит разницы между этими вещами, так что помещать или не помещать логику приложения в шаблоны - решать вам. В случае, если в шаблоне вообще не должно быть логики, можно ограничиться использованием чистого текста и переменных.

Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создаёт PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости обрабатывать файл шаблона для каждого запроса и каждый шаблон может пользоваться всеми преимуществами таких кэшируюших решений, как eAccelerator или PHP Accelerator.

Smarty очень хорошо решает поставленную задачу разделения логики и визуализации. Причем это решение очень простое и не требует каких-то глубоких знаний в программировании на PHP или чем-то еще. Базовая настройка этого шаблонизатора так же очень проста. Поэтому Smarty можно рекомендовать к применению в разработке больших, средних и дажие самых маленьких и простых сайтов. Более того Smarty распространяется бесплатно, а документация доступна на руссом языке.

В заключении остается только назвать официальный сайт шаблонизатора Smarty - http://smarty.net.

Петрелевич Сергей
petrelevich@yandex.ru

Метки: PHP   Web   Smarty  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.

Яндекс цитирования Ðåéòèíã@Mail.ru Rambler's Top100