velliz / pte
puko 模板引擎
README
PTE 是一个专为性能和兼容性而构建的独立模板引擎,适用于独立使用。当 PTE 运行时,它会遍历 HTML DOM 树到 PHP 数组(词法分析器)并将输出与数据规范(解析器)结合。根据提供的 index.php
示例,在不开启缓存的情况下,渲染 HTML 页面平均耗时 0.004 秒,开启缓存后为 0.002 秒。
安装
composer require velliz/pte
此命令用于使用 Composer 安装 "velliz/pte" 包。它将包添加为项目的依赖项。
其他要求
- ext-json
- ext-xmlrpc
可用标签
使用示例
实例化对象
$pte = new Pte(false, true, true); $pte->SetMaster('template/master.html'); $pte->SetHtml('template/view.html');
在上面的代码片段中,使用三个参数实例化了 Pte 类的对象:将模板文件缓存为 true,使用主文件为 true,使用 HTML 主体文件为 true。
使用 SetMaster() 方法通过文件路径 'template/master.html' 设置主文件,并使用 SetHtml() 方法通过文件路径 'template/view.html' 设置视图模板的 HTML 文件。
您还可以创建自己的解析规则,如下所示
class BaseUrl implements \pte\CustomRender { var $fn; var $param; var $tempJs = ''; var $tempCss = ''; public function Parse($data = null, $template = '', $templateBinary = false) { if ($this->fn === 'url') { return 'https:///' . $this->param; } return ''; } /** * @param $fnName * @param $paramArray */ public function Register($fnName, $paramArray) { $this->fn = $fnName; $this->param = $paramArray; } }
上面的代码定义了 BaseUrl 类,该类实现了 \pte\CustomRender 接口。Parse() 方法用于为模板引擎定义自定义解析规则。在此示例中,如果函数名为 'url',则返回使用提供的参数构建的 URL。否则,返回空字符串。
要使用 BaseUrl 自定义类在 HTML DOM 中渲染标签,可以使用以下代码
{!url(home)}
为了设置数据值,您可以创建 BaseUrl 类的实例,并将其作为第一个参数传递给 SetValue() 方法。第二个参数应该是数组格式的数据。以下是一个示例
$v = new BaseUrl(); $pte->SetValue(array( 'FirstCircle' => 'Selamat Datang !', 'WishList' => array( array( 'Lingkaran' => 'Bulat Sempurna 1', 'Anak' => array( array( 'Umur' => 20, 'Anak2' => array( array('Umur2' => 41), array('Umur2' => 42), array('Umur2' => 43), ), ), array( 'Umur' => 19, 'Anak2' => array( array('Umur2' => 14), array('Umur2' => 15), array('Umur2' => 16), ), ) ), ), array( 'Lingkaran' => 'Bulat Sempurna 2', 'Anak' => array( array( 'Umur' => 46, 'Anak2' => array( array('Umur2' => 9), ), ), ), ), ), 'Wishlist2' => array( 'val' => 'DARI CONTROLLER', ), 'namaband' => 'K-POP', 'Umur' => 23, 'Author' => 'Didit Velliz', 'Member' => array( array( 'NamaMember' => 'Universitas X', 'Alamat' => 'Bandung, Indonesia', 'Hobi' => array( array('List' => 'Makan'), array('List' => 'Traveling'), array('List' => 'Tidur'), ), ) ), 'NamaMember' => 'Laptop Gaming', ));
要获取结果,您可以使用 Output() 方法,该方法使用词法分析和解析器处理 HTML 输入。以下是一个示例
$pte->Output($v, Pte::VIEW_HTML);
您还可以选择将 Pte::VIEW_JSON 作为输出格式。
示例
master.html
<!DOCTYPE html> <html> <head> <base href="{!url(/)}"> <title>Page {!FirstCircle}</title> </head> <body> <div class="container"> <h1>Welcome to site {!Pass}</h1> <p>Today will be preparation {!url(/test/sumber)}</p> WishList 1 <hr> <!--{!WishList}--> <p>Mulai - {!Lingkaran}</p> <!--{!Anak}--> <div>Ini anak 1 - {!Umur}</div> <!--{!Anak2}--> <div>Ini anak 2 - {!Umur2}</div> <!--{/Anak2}--> <div>Ini ulangi anak 1 - {!Umur}</div> <!--{/Anak}--> <h1>Sekian</h1> <!--{/WishList}--> <hr> <!--{!Wishlist2}--> <p>Whistlist 2 {!val}</p> <!--{/Wishlist2}--> {CONTENT} Band 1: {!namaband} <!--{!Wishlist2}--> <p>Test Whistlist 2 {!val}</p> <!--{/Wishlist2}--> </div> {!view(sidebar.html)} {!part(css)} {!part(js)} </body> </html>
view.html
{!css(<link href="template/bootstrap.css" rel="stylesheet" type="text/css" />)} <div> Hello: {!Author}<br> <h5>Member</h5> <!--{!Member}--> {!NamaMember} <br/> {!Alamat} <br/> <!--{!Hobi}--> Hobby: {!List} <!--{/Hobi}--> <!--{/Member}--> </div> {sidebar.html} NAMA MEMBER : {!NamaMember} <br> {!js(<script src="template/jquery.min.js" type="text/javascript"></script>)}
关于
由印度尼西亚班加尔制作的 <3。
版权所有 2017 Didit Velliz