mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 13:21:36 +01:00
98 lines
4.7 KiB
XML
98 lines
4.7 KiB
XML
<?xml version="1.0" encoding="windows-1251"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: 1.2 Maintainer: freespace Status: ready -->
|
||
<preface id="preface">
|
||
<title>Предисловие</title>
|
||
<para>
|
||
Несомненно, один из наиболее часто задаваемых вопросов в списках
|
||
рассылки PHP - "Как мне сделать свои PHP-скрипты независимыми
|
||
от дизайна?". Хотя PHP называют "скриптовым языком, встраиваемым
|
||
в HTML", после написания нескольких проектов, в которых PHP и HTML
|
||
свободно перемешиваются, многие понимают, что отделение формы от
|
||
содержания - это Хорошая Вешь [TM]. Кроме того, во многих компаниях
|
||
должности дизайнера и программиста разделены между собой. Так
|
||
начинается поиск обработчика шаблонов...
|
||
</para>
|
||
<para>
|
||
Например, в нашей компании разработка приложения идёт таким образом:
|
||
после того, как готова вся проектная документация, дизайнер интерфейса
|
||
создаёт макеты и передаёт их программисту. Программист реализовывает
|
||
логику приложения на PHP и использует макеты интерфейса для создания
|
||
базовых шаблонов. Затем проект передаётся HTML-дизайнеру/верстальщику,
|
||
который доводит шаблоны до совершенства. Проект может несколько раз
|
||
переходить из этапа HTML-вёрстки к этапу программирования и обратно.
|
||
Таким образом, важно иметь хорошую поддержку шаблонов, потому что
|
||
программисты не хотят иметь дела с HTML и не хотят, чтобы HTML-дизайнеры
|
||
копались в PHP-коде. Дизайнерам нужна поддержка конфигурационных
|
||
файлов, динамических блоков и прочих интерфейсных нюансов, но они не
|
||
хотят иметь дела со сложностями языка программирования PHP.
|
||
</para>
|
||
<para>
|
||
Глядя на множество обработчиков шаблонов, доступных сегодня для PHP,
|
||
большинство из них предоставляет базовые возможности подстановки
|
||
переменных в шаблоны и имеет ограниченную поддержку динамических блоков.
|
||
Но нам требовалось нечто большее. Мы хотели, чтобы программисты
|
||
ВООБЩЕ не имели дела с HTML, но это было практически неизбежно.
|
||
К примеру, если дизайнер хотел, чтобы два фоновых цвета чередовались
|
||
при отображении динамических блоков, эту задачу необходимо было решать
|
||
вместе с программистом. Нам также требовалось, чтобы дизайнеры могли
|
||
использовать собственные конфигурационные файлы и вставлять переменные
|
||
из этих файлов в шаблоны. И так далее.
|
||
</para>
|
||
<para>
|
||
Мы начали написание спецификации для обработчика шаблонов ещё в
|
||
1999 году. Когда мы закончили спецификацию, мы начали работать
|
||
над обработчиком шаблонов, написанным на Си, которому, как мы надеялись,
|
||
разрешат стать частью PHP. Мы не только наткнулись на множество
|
||
технических барьеров, но было и большое количество споров относительно
|
||
того, что должен и не должен делать обработчик шаблонов. Благодаря этому
|
||
опыту мы решили, что обработчик шаблонов должен быть написан на PHP
|
||
в виде класса, чтобы каждый мог использовать его так, как хочет.
|
||
Затем мы написали движок, который соответствовал этим требованиям
|
||
и <productname>SmartTemplate</productname> появился на свет
|
||
(замечание: этот класс никогда не был опубликован).
|
||
Это был класс, который делал практически всё, что нам требовалось:
|
||
обыкновенная подстановка переменных, поддержка подключения других
|
||
шаблонов, интеграция с конфигурационными файлами, встраивание
|
||
PHP-кода, ограниченная поддержка условий 'if' и улучшенная
|
||
поддержка вложенных динамических блоков. Всё это достигалось
|
||
использованием регулярных выражений и в итоге у нас получился код,
|
||
который, скажем так, не позволял вносить в себя какие-либо изменения.
|
||
Кроме того, он прилично тормозил в крупных приложениях из-за большого
|
||
количества парсинга и регулярных выражений, которые обрабатывались
|
||
при каждом запросе. Наибольшей проблемой с программистской точки
|
||
зрения была та работа, которую нужно было провести над PHP-скриптом
|
||
для настройки и обработки шаблонов и динамических блоков.
|
||
Как же мы можем упростить это?
|
||
</para>
|
||
<para>
|
||
Затем пришло видение того, что в последствии переросло в Smarty.
|
||
Мы знали, как быстр PHP-код, если его не перегружать обработкой шаблонов.
|
||
Мы также знали, как всеобъемлюще и непонятно может выглядить язык PHP
|
||
для среднестатистического дизайнера, и что это можно замаскировать
|
||
при помощи более простого синтаксиса шаблонов. А почему бы нам
|
||
не объединить две эти силы? Так и родился Smarty...
|
||
</para>
|
||
</preface>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"../../../../manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|