Платформа TEMIS предназначена для автоматизации рутинных действий по приему и установке значений полей в формах ввода. Но при этом нет и жестких ограничений на формат входных данных и структуру Вашего приложения. Таким образом платформа TEMIS не является полноценным фреймворком для PHP, но также не является простым шаблонизатором.
Первоначально это была библиотека решающая те задачи, которые указанны во введении, и называлась она '''TemIs''' как сокращение от "'''Tem'''plate '''Is'''", то есть "Шаблон это...". Но постепенно вокруг шаблонизатора, из за особенностей работы и ни с чем стандартным не совместимости, образовалась большая инфраструктура поддержки приложения. Поэтому название от сокращение перешло в самоназвание среды '''Temis''', как "ПЛИМ" который прыгает и скачет и ничего не значит Ирины Токмаковой.
Учитывая особенности вывода данных под управлением TEMIS был разработан слой взаимодействия с базой данных Temis.ADO обеспечивающий загрузку объектов содержащих только запрошенные данные без метаинформации. А также дополнительные модули для решения типовых задач Temis.Toolbox.
Включает в себя несколько подсистем:
обертки работы с XML, и XML сериализации<| Модуль TEMIS | Описание | Принадлежность |
|---|---|---|
| Temis.BIOS | базовые обертки работы с источниками запроса | необходим |
| Temis.XML | необходим | |
| Temis.UI | библиотека визуальных элементов | ядро системы |
| Temis.Core | диспетчер событий и исполнитель страниц | ядро системы |
| Temis.Pixel | компилятор XSLT в PHP код (PXSL), убыcтряет преобразование в 2-4 раза | дополнительный, подготовка страницы |
| Temis.Xitec | XSLT Widget Template Compiler, упрощает сопровождение шаблонов Temis | SDK |
| Temis.SQL | Abtract data objects - объектно ориентированная обвязка для работы с базами SQL | дополнительный |
| Temis.Toolbox | дополнтельные полезные обьекты типа диагностики и логгера | дополнительный |
| Temis.RPC | Удаленный вызов процедур, позволяет общаться через программный интерфейс мимо броузера. | дополнительный |
| Temis.App | Каркас типового приложения | дополнительный |
Система использует двойное пребразование пользовательсокго шаблона для обеспечения простоты кодирования шаблона и встраивания кода TEMIS в результирующий шаблон.
Так как HTML FORMS элементы инфраструктуры TEMIS также описан в виде шаблонов то полный цикл преобразования будет следующим:
{| class="standard" ! исходные данные || назначение || преобразователь || результат пребразования
| - |
| Widget XSLT |
| мета шаблон обслуживающий 2 источника: |
| Temis.Xitec | |
| Widget.XSLT готовый для использования в пользовательском шаблоне | |
| - | |
| Пользовательский шаблон,<br/>содержащий ui: элементы | |
| пользовательский XSLT | Temis.Core |
| все UI элементы заменены соответвующим XSLT кодом<br/> |
Compiled XSLT(CXSL), XSLT готовый для работы с кодом страницы
| - |
| данные страницы |
| исходные данные подготовленые для преобразования |
Compiled XSLT через
| HTML страница |
| } |
На преобразовании шаблонов есть изрядное проседание производительности, но XSLT позволяет жестко отделить исполняемый код страницы от шаблона. Одним из решения повышения производительности это замена конечного XSLT преобразователя на сам PHP в качестве преобразователя, но это сразу даст возможности смешивания кода и представления что скажется на качестве сопровождения но может повысить скорость работы готового шаблона.
Для того чтобы не допустить смешения кода, приедтся наращивать возможности шаблона, и приближать его к XSLT, что приведет к недопонимаю различий между XSLT и Temis.TPL . Проект Temis.Pixel показывает что полное дублирование функциональности XSLT на PHP приводит к потере производительности.