arhone / templating
用于处理模板的库 (PHP 7)
1.0.2
2017-12-21 10:55 UTC
Requires
- php: ^7.0
This package is not auto-updated.
Last update: 2024-09-20 20:00:49 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>
默认方法添加默认值,如果未设置属性,则使用此值。
<?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 处理吧 :)