Изменения

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

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

35 байтов убрано, 14:17, 3 апреля 2011
м
Нет описания правки
Данный модуль представляет собой новую версию VMX::Template, построенную на некоторых новых идеях, ликвидировавшую безобразие и legacy-код, накопленный в [[Шаблонизатор VMX::Template/Старая версия|старой версии]], однако сохранившую высокую производительность и простоту.
Есть [{{SVN|vitaphoto/branch/php/template.php}} PHP-версия] и [{{SVN|vitaphoto/branch/solstice/lib-sway/VMX/Template.pm}} Perl-версия] шаблонизатора. Реализация, естественно, несколько отличается по причине различий языков — например, в Perl’е для кэширования кода используются coderef’ы, а в PHP предполагается, что кэшированием занимается какой-нибудь [http://xcache.lighttpd.net/ XCache] или [http://eaccelerator.net/ eAccelerator], ибо там сохранить coderef между запросами, по-видимому, невозможно.
Развивается то одна, то другая, в зависимости от проекта, над которым я работаю в моменте.
Также есть простенький (и кривоватенький) файл настроек синтаксиса шаблонов для [http://www.midnight-commander.org/ Midnight Commander]'а: [{{SVN|vitalif/trunk/scripts/tpl.syntax|markup}} tpl.syntax].
Работаю над транслятором с {{CPAN|Template::Toolkit}} на VMX::Template. (ибо TT — задрал, скотина!). Код транслятора основан на оригинальной {{CPAN|Parse::Yapp}}-грамматике из комплекта поставки TT и находится по адресу: [{{SVN|vitaphoto/branch/solstice/tt2vmx}} tt2vmx].
<span style="border: 2px #FF8000 dashed; padding: 4px">Про VMX::Template можно сказать «ох уж эти перлисты — что ни пишут, всё Template::Toolkit получается».</span> Это к тому, что идея вообще-то схожая, но реализация гораздо проще и быстрее.
* PHP: «использовать mb_str* функции для работы со строками в выражениях».
* Perl: «я передаю в шаблон все переменные с флагом UTF-8 = On, их можно смело конкатенировать с UTF-ными частями шаблона». Если кто-то не знает, в Perl строки имеют на себе флаг UTF-8 = да или нет, и при конкатенации строки без флага со строкой с флагом строка без флага будет автоматически переведена в UTF-8 из кодировки, соответствующей текущей локали. Что означает двойное UTF-8-кодирование в случае, если строка на самом деле всё-таки в UTF-8, но просто на ней не установлен флаг.
*: Для приведения всех переменных шаблона к UTF-8 можно использовать функцию <tt>utf8on()</tt> из [{{SVN|vitaphoto/branch/solstice/lib-sway/VMX/Common.pm}} VMX::Common] (рекурсивный <tt>Encode::_utf8_on()</tt>).
'''Различается способ вывода ошибок при <tt>print_error = true</tt>.'''
* DUMP — это Dumper в Perl’е и var_dump в PHP.
'''PHP-версия не зависит ни от чего (кроме PHP 5), а Perl-версия зависит от [{{SVN|vitaphoto/branch/solstice/lib-sway/VMX/Common.pm}} VMX::Common].'''
'''В PHP-версии в шаблоны не включаются C-подобные «прагмы» #line, а в текст ошибок не включается имя файла шаблона и строка. Ибо решил — раз уж #line не поддерживается, нечего на строки заморачиваться.'''

Навигация