Изменения

Перейти к: навигация, поиск

Шаблонизатор VMX::Template

62 байта добавлено, 22:38, 28 ноября 2014
м
Нет описания правки
* Лицензия: GNU GPL версии 3 или новее
* Исходники (PHP >= 5.4): {{SVN|vitalif/trunk/Template/}}  — для работы нужны файлы template.php и template.parser.php. Исходник грамматики в [{{SVN|vitalif/trunk/Template/template.lime}} template.lime]* Исходники (Perl, '''обновлены!'''), несколько устаревшие: [{{SVN|vitaphoto — там же. Для работы нужны VMXTemplate.pm и VMXTemplate/solstice/lib-sway/VMX/Template*.pm}} Template. Для сборки ещё template.yp и template.skel.pm], [(плюс установленный {{SVNCPAN|vitaphoto/solstice/lib-sway/VMX/Common.pmParse::Yapp}} Common).pm]
* Простые настройки для подсветки синтаксиса шаблонов в [http://www.midnight-commander.org/ Midnight Commander]'а: [{{SVN|vitalif/trunk/scripts/tpl.syntax|markup}} tpl.syntax]. Чтобы подсветка нормально выглядела, к tpl.syntax в начало надо дописать html.syntax из стандартного комплекта поставки mc.
Синтаксис вызова функций:
* <tt>ФУНКЦИЯ(АРГУМЕНТ, АРГУМЕНТ, ...)</tt>
* <tt>ФУНКЦИЯ <пробел> ОДИН_АРГУМЕНТ</tt>
Существующие функции перечислены ниже. Через «=» в подзаголовках указываются синонимы функций.
==== Perl-версия — устаревшая ====
На момент 2013-04-20 Perl-версия — версия — устаревшая. А вот актуальная для неё [http://www.yourcmc.ru/wiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80_VMX::Template&oldid=6200 старая версия документации].
==== Кэширование работает по-разному ====
* PHP: интерпретатор PHP всегда инициализируется заново при обработке каждого HTTP-запроса, а живой coderef в промежутке между двумя инициализациями интерпретатора сохранить, видимо, невозможно. Однако предполагается, что всё прогрессивное человечество давно использует APC/XCache/ZendOpCache/eAccelerator, и поэтому, когда текст шаблонов компилируется в файлы, а файлы подгружаются путём require, на самом деле они загружаются не с диска, а из памяти кэшера, причём — в уже скомпилированном виде. Кроме того, так как скомпилированный шаблон представляет собой класс — в рамках одного запроса он загружается максимум 1 раз, последующие вызовы происходят уже очень быстро. Ну и на всякий пожарный — хотя это, возможно, уже особого выигрыша и не даёт — нескомпилированный текст шаблонов тоже кэшируется в кэше переменных APC/XCache/eAccelerator, если таковой присутствует, и не перезагружается с диска лишний раз. Если <tt>reload = false</tt>, лишними считаются все разы, кроме первого, даже если файл шаблона менялся.
В Perl действие <tt>reload</tt> немного отличается — отличается — <tt>reload = 0</tt> работает так же, как <tt>reload = false</tt> в PHP, но если <tt>reload > 0</tt>, то тексты шаблонов всё-таки перезагружаются с диска при изменении, но не чаще, чем раз в <tt>reload</tt> секунд.
В PHP также есть ещё одна проблема — в процессе выполнения невозможно добавить метод в класс без использования извращений типа [http://pecl.php.net/package/classkit classkit], а хочется, потому что сгенерированные из кода шаблона функции должны быть методами — они дёргают разные функции от $this, подразумевая, что это объект класса VMXTemplate.

Навигация