Skip to content

Latest commit

 

History

History
83 lines (56 loc) · 4.4 KB

pipe-functions.md

File metadata and controls

83 lines (56 loc) · 4.4 KB

Пайп функции

В 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.

Определение кастомных функций в Phplate

В качестве примера попробуем определить кастомную функцию json_pretty, которая будет формировать JSON строку с читабельным форматированием, аналогичным вызову json_encode([], JSON_PRETTY_PRINT):

Template::addUserFunctionHandler('json_pretty', function ($variable, ...$args) {
    return nl2br(str_replace(' ', '&nbsp;', json_encode($variable, JSON_PRETTY_PRINT)));
});
echo Template::build('template', ['arr' => ['Object' => ['Field1' => 1, 'Field2' => null]]]);

Вывод шаблона {{ arr|json_pretty }} с использованием кастомной функции будет следующим:

{
    "Object": {
        "Field1": 1,
        "Field2": null
    }
}