TinyButStrong (сокр. TBS) это относительно лёгкий интерпретирующий обработчик веб-шаблонов для PHP[1]. В ряде интернет обзоров перечислен в списке лучших обработчиков шаблонов на PHP[2][3][4].

TinyButStrong
Логотип программы TinyButStrong
Тип Обработчик шаблонов
Написана на PHP
Операционная система Кроссплатформенное программное обеспечение
Последняя версия 3.14.0 (25 сентября 2022 г.)
Лицензия GNU LGPL
Сайт tinybutstrong.com

Особенности править

Инструмент 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() ;

?>

Примечания править

  1. 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.
  2. 19 Promising PHP Template Engines Архивная копия от 8 марта 2010 на Wayback Machine и ссылка на эту статью Архивная копия от 26 сентября 2009 на Wayback Machine на phpdeveloper.org Архивная копия от 28 января 2010 на Wayback Machine
  3. Top 25 PHP template engines. Дата обращения: 31 января 2010. Архивировано 7 марта 2010 года.
  4. Ищем альтернативу Смарти. Дата обращения: 30 января 2010. Архивировано 8 марта 2010 года.
  5. Dynamic Articles with TinyButStrong Архивировано 11 февраля 2010 года.
  6. TinyButStrong template engine to ModX. Дата обращения: 30 января 2010. Архивировано из оригинала 7 апреля 2010 года.
  7. TinyButStrong Template Engine Архивировано 10 марта 2010 года.
  8. 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.
  9. TinyButStrong template engine in Kohana PHP framework. Дата обращения: 30 января 2010. Архивировано из оригинала 14 февраля 2010 года.
  10. sfTinyDoc plugin. Дата обращения: 30 января 2010. Архивировано 10 февраля 2010 года.
  11. TinyButStrong OOo (OpenOffice, office) — PHP Classes. Дата обращения: 30 января 2010. Архивировано 23 января 2010 года.

См. также править

Ссылки править