Перед тем как приступить к рассказу непосредственно о конкурентах, пожалуй, самого известного и самого популярного движка шаблонов, стоит понять, для каких целей это делается. Отсутствие выбора — это определенно плохо, и еще хуже, когда речь идет о веб-программировании. Одно из главных преимуществ Smarty оборачивается и одним из главных недостатков: при всей своей комплексности сей движок подойдет далеко не каждому, ибо часть его функциональности попросту не нужна многим проектам. Это во-первых.
А во-вторых, Smarty — это не только и не столько движок, а скорее целая framework, диктующая собственные правила игры, что, разумеется, идет вразрез с пониманием процессов у ряда специалистов.
Очень хорошо, если видение программиста совпало с видением разработчиков Smarty. А вдруг нет? Тогда придется либо писать свою библиотеку (это иногда единственный верный путь, если имеется необходимое время), либо искать другое решение. Такова аргументационная база вкратце. Кроме того, никто еще не отменял праздное любопытство и желание быть технологически подкованным. Посему начинаем обзор.
patTemplate
Очень интересный движок. В первую очередь тем, что проповедует несколько отличную от Smarty идеологию создания шаблонов и работы с ними. Не сказать, что эти отличия фатальны, но тенденция все же есть, и в случае с рядом других проектов, о которых чуть ниже, она будет видна еще лучше.
Итак, в шаблонах patTemplate помимо обычных переменных, хорошо известных всем, ставятся еще и XML-теги, которые помогают разделить HTML-файл на несколько частей, одни из которых обрабатываются движком, а другие нет. К тому же использование тегов выбрано еще и для того, чтобы у пользователя имелась возможность разделить один шаблон на несколько, упростив тем самым их менеджмент. Движок patTemplate является частью одного большого немецкого open-source-проекта под названием PHP Application Tools, который содержит массу других PHP-полезностей, а стабильность его работы не вызывает нареканий.
Savant не компилирует шаблоны
Продукт крайне амбициозный, о чем его разработчики не стесняются открыто заявлять. К примеру, официальный сайт начинается с фразы: «Простая, элегантная и мощная альтернатива Smarty». Впрочем, не все так безоблачно, как может показаться с первого взгляда. Суть заключается в том, что Savant не является компилятором шаблонов. Другими словами, он не имеет собственного языка для оформления контентной логики, и разработчику приходится использовать старый добрый PHP везде: и в логической части, и в презентационной.
Такой подход, конечно, имеет свои плюсы, но они очевидны исключительно программистам: им не надо учить еще один язык, пусть и простой шаблонный. Но когда речь заходит о дизайнерах, то они, как известно, на дух не переносят точки с запятой, стрелки и равно; им гораздо легче с подсказкой расставить переменные и не беспокоиться о будущем. Однако Savant имеет достаточно прозрачный интерфейс для подключения расширений, что позволяет желающим написать для него отдельный компилятор и использовать любой язык разметки. То есть, хорошенько поработав, можно сделать из Savant новый Smarty. Но стоит ли игра свеч?
Yet Another Template System (YATS)
Разработчики сообщают, что идея их проекта была навеяна движком FastTemplate (он в данный обзор не включен, ибо, во-первых, хорошо известен, а во-вторых, давно не обновлялся и по некоторым параметрам морально устарел). Главное его отличие от множества других продуктов — низкоуровневая реализация. Если большинство конкурентов написаны на PHP и являются подключаемым классом, то YATS разработан на C и потому используется в качестве PHP-модуля.
Преимущества очевидны, и касаются они в первую очередь производительности. Если тот же FastTemplate вначале интерпретировался на сервере, затем шел парсинг шаблона, то YATS, будучи модулем, работает на порядок быстрее. С другой стороны, не на каждом хостинге есть возможность установки внешнего расширения системы. В дополнение расширяемость YATS остается под большим вопросом, так как внести изменения в PHP-код — это достаточно просто, но вот работа с C требует уже совсем других навыков.
TinyButStrong состоит всего из 6 методов и 5 опций
Из названия сразу становится ясно, что разработчики этого движка делали основной упор на сочетание приемлемой функциональности и повышенной производительности, причем не только за счет улучшения скорости работы, но и за счет уменьшения размера. Действительно, зачем иметь несколько десятков встроенных функций, когда можно ограничиться шестью методами и пятью опциями? Все остальное при желании добавляется с помощью плагинов.
Основное преимущество TinyButStrong невозможно переоценить: этот движок очень хорош в работе, и одновременно его структура и синтаксис настолько прозрачны, что управиться с ним по силам даже школьнику. Также наверняка окажутся полезны такие возможности, как кеширование данных, отслеживание событий, поддержка взаимодействия с базами данных и высокий уровень читабельности исходных кодов.
Еще один проект, который ставит в вину Smarty его объем и некоторую тяжеловесность. Аргумент понятный и допустимый, о чем уже говорилось выше. Синтаксис MiniTemplator действительно прост и, я бы даже сказал, ненавязчив. Впрочем, обращение с шаблонными переменными от движка к движку мало чем отличается, и это логично. Тут в главной роли играет, как правило, вопрос реализации.
С этим у MiniTemplator тоже в целом все в порядке, без излишеств. Есть обычные переменные, есть блоки, есть возможность вставлять в главные шаблоны другие дополнительные шаблоны, разделяя таким образом всю презентационную логику на несколько частей. Более того, MiniTemplator значительно превосходит своих коллег по цеху минимализма в аспектах скорости исполнения веб-приложений, которая находится на уровне TinyButStrong, но в то же время движок обладает большим набором функций. Из дополнительных плюсов стоит отметить наличие трех версий MiniTemplator: для PHP, для Java и для Visual Basic.
PHPTAL пропагандирует совсем иной подход к созданию и парсингу шаблонов
Следующий продукт стоит особняков, и на то есть свои объективные причины. Некоторые эксперты считают, что PHPTAL — это новый шаг в развитии PHP template engines, а к их доводам сложно не прислушаться. Чем же отличается проект компании Motion Twin от конкурентов? Дело тут совсем не в скорости, производительности и наборе дополнительных возможностей. PHPTAL предлагает совершенно иной подход к созданию шаблонов.
Помните patTemplate, о котором я рассказывал в самом начале обзора? Там для обозначения части шаблона, требующей парсинга, использовались XML-теги. Так вот синтаксис шаблонов в PHPTAL полностью базируется на XML, в то время как подавляющее большинство движков работают по схеме Smarty с шаблонными переменными.
Думаю, имеет смысл привести небольшой пример; вначале идет пример классического подхода.
${title}
Я использую некую унифицированную строку, где есть только переменная, и нет условий. Классический движок во время парсинга шаблона заменит ее нужным контентом и выведет страницу на экран. В случае PHPTAL все выглядит несколько иначе.
И так в PHPTAL реализуется все. Конечно, новый подход — это новые проблемы, но следует заметить, что он не из воздуха взялся, а пришел прямиком из проекта под названием Zope, частью которого является система Zope Page Templates, использующая технологию Template Attributes Language (TAL). Другими словами, PHPTAL является фактически имплементацией алгоритмов и механизмов, уже реализованных ранее, поэтому говорить о нестабильности или о множестве ошибок не приходится.
Однако можно предвидеть, что PHPTAL вряд ли придется по душе многим, кто уже давно работает с другими PHP template engines, ибо он пропагандирует совершенно иную философию работы. В то же время не стоит забывать: XML и технологии на его базе все чаще становятся общепризнанными стандартами, и этот факт игнорировать никак нельзя. В любом случае, уверен, будущее принесет нам и другие проекты, построенные на тех же принципах, что и PHPTAL.
Последним в обзоре идет движок, представляющий когорту классических. Он очень похож своей функциональностью на Smarty, но кое в чем однозначно проигрывает конкуренту. Тем не менее Yapter заслуживает внимания в первую очередь более прозрачным синтаксисом шаблонов, если такое вообще возможно. Работать с Yapter просто: он не требует каких-то чрезмерных усилий и вполне достоин расшифровки своего названия: «Yet Another PHP Template Engine».
Правда, я бы рекомендовал использовать Yapter исключительно в тех случаях, когда остальные решения совсем не подходят по каким-либо нетехнологическим причинам: идеологическим, политическим и так далее. Скорость движка оставляет желать лучшего, и, наверное, эта проблема будет-таки решена в ближайшем будущем, ибо работа по усовершенствованию проекта ведется разработчиками постоянно. Тоже, кстати, плюс.
Завершая статью, я не буду выделять лидеров и аутсайдеров, так как их попросту нет: все зигзагообразно и, разумеется, индивидуально. Могу лишь напомнить, что официальной статистики по PHP template engines никто не ведет, но многие заявляют, будто их насчитывается не меньше 50 штук; это только open source. Также существует целое море коммерческих продуктов, которые пользуются популярностью. Копаться в таком изобилии — дело не такое уж и благодарное, но в какой-то мере приятное, потому что каждый проект — это плод долгой работы нескольких разработчиков, каждый из которых мечтает изобрести лучший велосипед в мире. А это определенно заслуживает уважения. В любом случае нам от их деятельности становится только лучше.
Ссылки по теме
Статья получена: hostinfo.ru