Вызов функции из функции
В отличие от первой версии, шаблонизатор CTPP2 позволяет указывать функцию в виде аргумента другой функции. Делается это следующим образом:
<TMPL_var HREF_PARAM("foo", DATE_FORMAT(1200490323, "%Y-%m-%d %H:%M:%S"))>
Когда компилятор шаблонов находит подобную конструкцию, генерируется следующий код
N + 0: PUSH STRING (`foo`)
N + 1: PUSH INT (1200490323)
N + 2: PUSH STRING (`%Y-%m-%d %H:%M:%S`)
N + 3: SYSCALL DATE_FORMAT(ARGS: 2)
N + 4: SYSCALL HREF_PARAM(ARGS: 2)
N + 5: OUTPUT
То есть, результат выполнения функции DATE_FORMAT помещается в стек как обычная переменная. При исполнении следующей функции (HREF_PARAM), результат доступен уже как обычный параметр функции. Глубина вложенности функций друг в друга не ограничена что позволяет разрабатывать действительно гибкие шаблоны.
|