hrustbb2/text_templator

There is no license information available for the latest version (dev-master) of this package.

dev-master 2022-05-03 06:14 UTC

This package is not auto-updated.

Last update: 2025-06-24 03:24:21 UTC


README

Задача.

Иногда необходимо формировать какой-либо шаблонный текст путем подстановки в шаблон определенных параметров.

Например:

В зависимости от того сколько и какие параметры подставляются в шаблон нам необходимо сформировать один из трех вариантов текста:

Список телевизоров с диагональю от 15'.

Список телевизоров с диагональю от 15' до 20'.

Список телевизоров с диагональю до 15'.

Шаблон будет выглядеть следующим образом:

Список телевизоров&{с диагональю&{от&{%from}'}&{до&{%to}'}}.

Грамматика шаблона проста.

Кроме текста здесь присутствуют блоки, которые заключены в фигурные скобки { }, переменные параметры, которые заключены в {% }, перед блоком либо параметром может стоять модификатор &, который указывает на то, что перед блоком не нужно ставить запятую. Блок может включать внутри себя другие блоки и параметры.

В случае если какие-либо параметры не передаются в шаблон, то весь блок, внутри которого находится эти параметры, не отображается.

Например:

$template = new Template();
$tmp = 'Список телевизоров с диагональю&{от&{%from}'}&{до&{%to}'}';
$vars = [
            'from' => 15,
            'to' => 20,
        ];
$template->compile($tmp);
$template->loadVars($vars);
echo $template->toString();

Данный код выведет

Список телевизоров с диагональю от 15' до 20'.

В случае если в шаблон передается только параметр to, то мы получим строку:

Список телевизоров с диагональю до 20'.

Ну, а если не передадим ни одного параметра, то получим строку:

Список телевизоров.

Больше примеров в тестах. Запуск тестов: php tests/run.php

Вопросы, предложения, пожелания можете слать сюда или https://t.me/h07_ru