arhone/template

Библиотека для работы с шаблонами (PHP 7)

1.0.2 2017-12-21 10:55 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:07:58 UTC


README

Нативный шаблонизатор (PHP 7)

Шаблонизатор предназначен для удобного разделения бизнес логики и логики представления.

Позволяет подключать файлы шаблонов и передавать в них готовые данные.

Установка

composer require arhone/templater

<?php

use arhone\templater\Templater;
include 'vendor/autoload.php';

$templater = new Templater();

Примеры

Рендер шаблона
<?php

echo $templater->render(__DIR__ . '/template/default.tpl', [
    'title' => 'Мой сайт'
]);

template/default.tpl:

<?php
/**
 * @var \arhone\templater\TemplaterInterface $this
 * @var string $title Название сайта
 */
?>
<html>
    <title><?=$title?></title>
</html>
Указание нескольких шаблонов

Допустим у вас есть модуль, у него есть шаблон по умолчанию, но пользователь хочет заменить его своим шаблоном.

Что бы сохранить исходный шаблон, вы можете указать путь к дополнительному шаблону, если он существует, то шаблонизатор подключит его, если нет, то подключиться стандартный.

<?php

echo $templater->render([
    __DIR__ . '/template/extend/myModule/default.tpl', // Новый
    __DIR__ . '/myModule/template/default.tpl' // Стандартный
]); // Подключиться template/extend/myModule/default.tpl если он существует
Использование общих блоков

Такие переменные доступны во всех шаблонах.

Это позволяет наследовать шаблоны и переопределять их блоки.

Установка значения блока
<?php

$templater->body = 'Содержимое';
$templater->set('body', 'Содержимое'); // Тоже самое

echo $templater->body;
Дописывание содержимого в блок
<?php

$templater->body .= ' продолжение';
$templater->add('body', ' продолжение'); // Тоже самое

echo $templater->body;
Получение содержимого
<?php

echo $templater->body;
echo $templater->get('body'); // Тоже самое
Удаление содержимого
<?php

$templater->body = null;
$templater->delete('body'); // Тоже самое
unset($templater->body); // Тоже самое
Установка значения по умолчанию
<?php
/**
 * @var \arhone\templater\TemplatingInterface $this
 */
?>
<html>
    <title><?=$this->title ?? 'Заголовок'?></title>
    <body>
    <?php $this->default('body')?>
        <div>Содержимое</div>
    <?=$this->end('body')?>
    </body>
</html>

Метод default добавляет значение по умолчанию, это значение будет использовано в случае если свойство не было задано.

<?php

$templater->body = 'Значение';
$templater->default('body', 'По умолчанию');
echo $templater->body; // Выведет "Значение"
<?php

$templater->body = 'Значение';
$templater->default('body', 'По умолчанию');
unset($templater->body);
echo $templater->body; // Выведет "По умолчанию"

Таким образом можно переопределять блоки стандартных шаблонов

<?php

echo $templater->render(__DIR__ . '/slave.tpl');
<?php
/**
 * Шаблон slave.tpl
 * @var \arhone\templater\TemplatingInterface $this
 */
?>

<?php $this->set('body')?>
    <div>Содержимое</div>
<?php $this->end('body')?>

<?=$this->render(__DIR__ . '/default.tpl')?>
<?php
/**
 * Шаблон default.tpl
 * @var \arhone\templater\TemplatingInterface $this
 */
?>

<?php $this->default('body')?>
    Значение по умолчанию
<?=$this->end('body')?>
htmlspecialchars() с исключениями

Когда нужно разрешить отрисовывать только некоторые html теги, например p или code

<?php
/**
 * @var \arhone\templater\TemplatingInterface $this
 */
?>

<?php $this->add('body')?>

    <strong>strong</strong>
    <b>b</b>
    <p>p</p>
    <div class="test">div</div>
    <img src="" alt="img">
    <code class="html"><div>div</div></code>

<?=$this->specialChars($this->end('body'), [
    'strong',
    'p',
    'img' => ['src', 'alt'],
    'code' => ['class']
])?>

Для всего остального есть PHP :)