В Phplate имеются встроенные пайп функции. Также имеется возможность определить кастомные функции, но об этом чуть ниже.
-
raw
оставляет строку без изменений, полезно при включенной настройкеAutoSafe
; -
safe
экранирует строку; -
text
форматирует текст, заменяя переносы строк на html теги<br>
, два пробела идущих друг за друга заменяет на два неразрывных пробела, а символ табуляции на четыре неразрывных пробела; -
lowercase
приводит строку к нижнему регистру; -
uppercase
приводит строку к верхнему регистру; -
url
то же что иsafe
(пока что); -
urlparam
url-кодирует строку согласно RFC 1738; -
substr
обрезает строку, принимает один или два аргумента, то есть имеет два варианта использования:{{ 'text'|substr(1) }} // выведет 'ext' {{ 'text'|substr(1, 2) }} // выведет 'ex'
-
count
вернёт количество элементов в массиве, или результат методаcount
, если аргумент является объектом, реализующим интерфейсCountable
; -
isarray
проверяет, является ли аргумент массивом; вернёт булево значение, поэтому данная функция будет полезна в условных блоках; -
keys
вернёт список ключей массива; -
join
соединяет элементы массива с помощью символа-разделителя, переданного в качестве аргумента к функции:{{ myArr|',' }} // где myArr - это массив, переданный в шаблон в качестве одного из параметров
-
split
, в противоположностьjoin
, разделяет строку на массив с помощью символа разделителя:{{ 'Hello,World'|split(',')|count }} // выведет 2
-
slice
вырезает кусок из массива, работает аналогично функцииarray_slice()
в PHP.
-
json
кодирует переменную в JSON строку; -
date
форматирует дату-время из переменной по заданному формату:{{ time|date }} // выведет текущую дату-время используя формат по умолчанию "Y-m-d H:i:s" {{ time|date('H:i:s Y-m-d') }} // выведет текущую дату-время используя указанный формат
при этом переменная должна содержать либо строку с датой-временем в известном для PHP формате, либо
timestamp
значение, либо объект, реализующийDateTimeInterface
.
В качестве примера попробуем определить кастомную функцию json_pretty
, которая будет формировать JSON строку с читабельным форматированием, аналогичным вызову json_encode([], JSON_PRETTY_PRINT)
:
Template::addUserFunctionHandler('json_pretty', function ($variable, ...$args) {
return nl2br(str_replace(' ', ' ', json_encode($variable, JSON_PRETTY_PRINT)));
});
echo Template::build('template', ['arr' => ['Object' => ['Field1' => 1, 'Field2' => null]]]);
Вывод шаблона {{ arr|json_pretty }}
с использованием кастомной функции будет следующим:
{
"Object": {
"Field1": 1,
"Field2": null
}
}