arhone / template
用于处理模板的库(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-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>
默认方法添加默认值,如果没有设置属性,将使用此值。
<?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 :)