Изменения

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

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

2675 байтов добавлено, 15:22, 29 июля 2010
м
Нет описания правки
Путь к переменной теперь может включать в себя числа. Это будут обращения к элементам массивов, в то время как всё остальное — обращения к элементам хешей.
 
=== Блоки ===
Вне блока {block} будет иметь значение ARRAY(0x…), то есть массив всех итераций блока block, а {block.0} будет иметь значение HASH(0x…), то есть первую итерацию блока block.
К номеру итерации можно обратиться через '''<tt>{var#}</tt>'''.
=== Функции === '''Операторов нет''', но фильтров нет, есть функции. Пример:
<pre><!-- IF OR(function(block.key1),AND(block.key2,block.key3)) --></pre>
{s block.key}
</pre>
 
=== IF ===
Условный вывод:
ELSIF эквивалентно ELSE IF и ELSEIF.
 
=== SET ===
Запись значения переменной:
<!-- SET block.key = выражение -->
</pre>
 
=== Включения ===
Включение другого шаблона также осталось:
<pre><!-- INCLUDE another-file.tpl --></pre>
 
По «динамическому» имени шаблона включение производится функцией <tt>INCLUDE</tt> (она же <tt>PARSE</tt>).
== Функции ==
* I() — преобразует значение к целому числу.
Расширяемость в области функций: ;Run-time функции: В качестве функции также можно использовать переданный в хеше данных coderef (замыкание, ссылку на функцию, или любое «[http://php.net/manual/en/function.is-callable.php is_callable]» в случае PHP). А если Если же хочется вынести в «функцию» блок кода из шаблона — проще создать отдельный шаблон и вызывать его, предварительно делая <tt>&lt;!-- SET --></tt> именованных аргументов. Это действительно лучше, так как работает позволяет оптимально работать кэшированию.;Compile-time функции: При создании объекта шаблона можно передать параметр <tt>compiletime_functions</tt>, равный хешу, в котором ключи — имена дополнительных функций, а значения — любые coderef’ы (Perl) или callable (PHP). Эти функции вызываются в контексте объекта шаблона с параметрами, равными '''коду для вычисления соответствующего аргумента''', и кэшированиедолжны возвращать '''код для вычисления результата'''.То есть, они выполняются на этапе компиляции. (пока только PHP-версия)
=== OR, AND, NOT ===
Действуют аналогично Perl операторам == eq > < >= <= gt lt ge le.
В PHP-версии на данный момент такого много-безобразия нет, есть просто EQ NE GT LT GE LE. Хотя это и имеет свои минусы - если хотя бы один аргумент принимается PHP как численный, сравнение становится численным.
=== COUNT, SUBARRAY=ARRAY_SLICE, SUBARRAY_DIVMOD ===
Соответственно в хеше атрибуты идут парами КЛЮЧ, ЗНАЧЕНИЕ, КЛЮЧ, ЗНАЧЕНИЕ и т.п. (специального синтаксиса "=>" нет).
 
=== SORT ===
 
Сортировка массива по значениям.
 
=== ARRAY_MERGE ===
 
Слить массивы в один. Под Perl — только массивы (не хеши), под PHP — любые массивы.
=== GET, AGET, HGET ===
Получение элемента массива/хэша по «динамическому» ключу. По-моему, это лучше, чем зюки-хрюки Template Toolkit’а: <tt>hash.${hash2.$key}</tt> и т. п.
<tt>GET(откуда, что) </tt> автоматически решает, «откуда» — это массив или хеш, AGET служит только для массивов, а HGET только для хешей. В PHP-версии все три идентичны. <tt>GET(что)</tt> — получение значения переменной верхнего уровня.
=== MAP ===
=== STRLIMIT ===
(пока только PHP-версия, в Perl будет в будущем) Ограничение длины строки s максимальной длиной l — strlimit(s, l). Если строка превышает заданную длину, она обрезается предпочтительно по пробелу или Tab’у, а в конец добавляется «…» (троеточие).
=== S=HTML=HTMLSPECIALCHARS, T=STRIP, H=STRIP_UNSAFE , NL2BR ===
Преобразование символов < > & " ' в HTML-сущности.
Удаление только запрещённых тегов.
 
Преобразование переводов строк (\n) в HTML-тег <tt><nowiki><br /></nowiki></tt>.
=== URI_QUOTE=URIQUOTE=URLENCODE ===
Конкатенация элементов массива через разделитель — join(строка, аргументы). Конкатенирует также все элементы всех переданных массивов.
 
=== SUBSTR=SUBSTRING, STRLEN ===
 
Стандартная (для всех кроме жавистов стандартная) функция подстроки — substr(строка, начало, длина), или substr(строка, начало). Причём начало и длина могут быть отрицательными, тогда они считаются относительно длины строки.
 
Ну и функция «длина строки».
=== Q=QUOTE=ADDSLASHES, REQUOTE=RE_QUOTE=PREG_QUOTE ===
Разделение строки по регулярному выражению и лимиту — split(RegExp, аргумент, лимит). Лимит необязателен. (см. [http://perldoc.perl.org/functions/split.html perldoc -f split])
 
=== DUMP, JSON ===
 
Вывод всех данных из структуры — Dumper в Perl’е и var_dump в PHP.
 
Форматирование структуры данных в формат JSON. (пока только PHP)
 
=== INCLUDE=PARSE ===
 
Включение файла с именем, переданным аргументом.
=== SUBST, SPRINTF, STRFTIME ===

Навигация