TinyButStrong
TinyButStrong | |
---|---|
![]() | |
Тип | Обработчик шаблонов |
Написана на | PHP |
Операционная система | Кроссплатформенное программное обеспечение |
Последняя версия | 3.14.0 (25 сентября 2022 г.) |
Лицензия | GNU LGPL |
Сайт | tinybutstrong.com |
TinyButStrong (сокр. TBS) это относительно лёгкий интерпретирующий обработчик веб-шаблонов для PHP[1]. В ряде интернет обзоров перечислен в списке лучших обработчиков шаблонов на PHP[2][3][4].
Особенности
Инструмент TinyButStrong был спроектирован таким образом, чтобы можно было разрабатывать шаблоны при помощи простого использования визуальных редакторов (например, Dreamweaver или FrontPage), а также он позволяет создавать скрипты JavaScript в динамическом режиме. Данный инструмент содержит в себе всего 8 функций, при этом обеспечивает высокую эффективность работы. Это позволяет объединять шаблоны с переменными PHP или системами управления базами данных MySQL, PostgreSQL или SQLite.
В отличие, например, от Smarty не является вариацией на тему процедурного языка программирования, а использует механизмы привязки тегов шаблона к структуре и тегам HTML. Это упрощает его использование с WYSIWYG редакторами HTML. Также включает средства непосредственного подключения SQL запросов (без предварительного формирования из них массивов) к шаблонам TBS и.т.д.
Разработчики относят TBS к шаблонным системам третьего типа, где первый тип — это использование в качестве шаблонной системы самого PHP, а второй — программируемые шаблоны, такие как в Smarty.
Библиотека реализована в виде PHP-класса, который может быть расширен пользовательскими плагинами и распространяется под лицензией LGPL. Плагины включает в себя набор функций PHP или один класс PHP, который должны соответствовать специальному синтаксису, рассчитанному шаблонизатором TBS. Например: плагины базы данных - упрощают процесс распознания новых типов базы данных,другие плагины помогают пользователю добавлять к TBS рабочие функции или изменять его главные методы, что делает шаблонизатор более специализированным.
Пользователями различных CMS и CMF разработаны модули привязки этого шаблонного движка. Среди таких систем можно назвать Joomla,[5] MODx,[6] CodeIgniter,[7][8] Kohana,[9] Symfony[10] и др.
Класс-расширение этой библиотеки TinyButStrong OOo, позволяющий генерировать документы в формате OpenOffice.org, в октябре 2005 занял 5-е место в PhpClasses Innovation Award[11] — конкурсе, проводимом популярным сайтом PHPClasses.
Недостатки
Основной недостаток TBS — невысокое быстродействие. Эта библиотека выполняет достаточно сложный анализ HTML кода в момент формирования HTML-страницы из шаблона (TinyButStrong — в отличие от Smarty, это не компилирующий обработчик шаблонов). Впрочем проблема может быть решена путём подключения плагина кеширования.
Другой тонкий момент заключается в том, что при всей простоте начального освоения этого обработчика шаблонов, для его достаточно «продвинутого» использования необходимо понимать внутренние механизмы работы библиотеки. В противном случае слишком легко написать шаблон с ошибкой, непредусмотренным поведением, или имеющий катастрофически низкое быстродействие.
Простота использования TinyButStrong (особенно совместно с WYSIWYG редакторами HTML) часто приводит к применению его в сайтах-однодневках, которые из за отсутствия поддержки или ошибок в исходном коде веб-приложения вскоре перестают нормально функционировать. Поиск в google по строке «TinyButStrong error» даёт достаточно грустную статистику подобной «популярности» этой библиотеки.
Пример кода
Следующий код выведет содержимое таблицы MySQL в виде «полосатой» HTML таблицы.
HTML часть:
<html> <body> <p align="center" class="title-page">Пример подключения данных из MySQL</p> <table border="1" align="center" cellpadding="2" cellspacing="0"> <tr bgcolor="#CACACA"> <td width="50"><strong>Место</strong></td> <td width="150"><strong>Ник</strong></td> <td width="50"><strong>Очков</strong></td> <td width="100"><div align="center"><strong>Дата</strong></div></td> </tr> <tr bgcolor="#F0F0F0"> <td>[blk1.#]</td> <td>[blk1.res_name;block=tr]</td> <!-- выражение block=tr декларирует границы блока, неявного цикла по записям blk1 --> <td><div align="right">[blk1.res_score]</div></td> <td><div align="center">[blk1.res_date;frm='mm-dd-yyyy']</div></td> </tr> <!-- два одноимённых блока трактуются как секции одного и того же блока, --> <!-- которые, если не указано иное, выполняются последовательно друг за другом --> <tr bgcolor="#E6E6E6"> <td>[blk1.#]</td> <td>[blk1.res_name;block=tr]</td> <td><div align="right">[blk1.res_score]</div></td> <td><div align="center">[blk1.res_date;frm='mm-dd-yyyy']</div></td> </tr> <!-- Секция NoData выполняется только если блок не содержит данных --> <tr bgcolor="#E6E6E6"> <td colspan="4" bgcolor="#FFCFB9">[blk1;block=tr;nodata]Данные отсутствуют.</td> </tr> </table> <p align="center">Выведено [blk1.#] строк.</p> </body> </html>
PHP-часть:
<?php include_once('tbs_class.php') ; // Подключаемся к БД if (!isset($_SERVER)) $_SERVER=&$HTTP_SERVER_VARS ; //PHP<4.1.0 require($_SERVER['DOCUMENT_ROOT'].'/cnx_mysql.php'); // Файл cnx_mysql.php содержит следующие строки: // $cnx_id = mysql_connect('localhost','user','password') ; // mysql_select_db('dbname',$cnx_id) ; // создаём экземпляр TBS $TBS = new clsTinyButStrong ; // подгружаем шаблон $TBS->LoadTemplate('tbs_us_examples_datamysql.htm') ; // подключаем данные для вывода в таблице $TBS->MergeBlock('blk1',$cnx_id,'SELECT * FROM t_tbs_exemples') ; // закрываем БД mysql_close($cnx_id) ; // Выводим HTML $TBS->Show() ; ?>
Примечания
- ↑ Timothy Boronczyk (Author), Martin E. Psinas (Contributor). Ch. 1 User Registration / Templates // PHP and MySQL: create-modify-reuse. — Wrox, May 5, 2008. — P. 11. — 341 p. — (Programmer to Programmer). — ISBN 0470192429.
- ↑ 19 Promising PHP Template Engines Архивная копия от 8 марта 2010 на Wayback Machine и ссылка на эту статью Архивная копия от 26 сентября 2009 на Wayback Machine на phpdeveloper.org Архивная копия от 28 января 2010 на Wayback Machine
- ↑ Top 25 PHP template engines (неопр.). Дата обращения: 31 января 2010. Архивировано 7 марта 2010 года.
- ↑ Ищем альтернативу Смарти (неопр.). Дата обращения: 30 января 2010. Архивировано 8 марта 2010 года.
- ↑ Dynamic Articles with TinyButStrong Архивировано 11 февраля 2010 года.
- ↑ TinyButStrong template engine to ModX (неопр.). Дата обращения: 30 января 2010. Архивировано из оригинала 7 апреля 2010 года.
- ↑ TinyButStrong Template Engine Архивировано 10 марта 2010 года.
- ↑ Thomas Myer. Ch 1. Welcome to MVC World / A Slighty Diffrent Approach: Templates / Using Third Party Templating Systems // Professional CodeIgniter. — 1 edition. — Wrox, July 28, 2008. — С. 18. — ISBN 0470282452.
- ↑ TinyButStrong template engine in Kohana PHP framework (неопр.). Дата обращения: 30 января 2010. Архивировано из оригинала 14 февраля 2010 года.
- ↑ sfTinyDoc plugin (неопр.). Дата обращения: 30 января 2010. Архивировано 10 февраля 2010 года.
- ↑ TinyButStrong OOo (OpenOffice, office) — PHP Classes (неопр.). Дата обращения: 30 января 2010. Архивировано 23 января 2010 года.
См. также
Ссылки
- www.tinybutstrong.com (англ.) — Официальный сайт
- Ищем альтернативу Смарти, статья на hostinfo.ru