ThinkTemplate
是一个基于 XML 的高性能编译型模板引擎,无需任何外部依赖,专为高效和灵活性设计。它最初作为 ThinkPHP
框架的内置模板引擎,现已支持独立使用,成为开发者构建动态模板的理想选择。凭借其动态编译、缓存机制以及 XML 架构,ThinkTemplate
在简洁性和强大功能之间实现了完美平衡。
每个模板文件在执行时都会生成一个编译后的缓存文件(本质是一个可运行的 PHP 文件)。由于其编译型特性,模板缓存无法关闭,即使禁用缓存,每次渲染时也会重新生成缓存文件,确保性能一致。
ThinkTemplate
支持两种标签类型,各自用途明确,满足不同开发需求:
标签类型 | 用途描述 |
---|---|
普通标签 | 用于变量输出、函数过滤和基本运算操作。 |
XML 标签 | 也称标签库标签,用于逻辑判断、循环输出、文件包含等,并支持功能扩展。 |
这种双标签体系兼顾了简单任务的便捷性和复杂逻辑的强大支持,适用于各种开发场景。
普通标签主要用于变量输出和模板注释,默认使用 {
和 }
作为定界符。例如:
{$name}
:输出变量 name
的值。{$vo.name}
:访问嵌套属性。{$vo['name']|strtoupper}
:对变量应用过滤器(如转换为大写)。为确保正确解析,标签定义必须紧跟定界符,中间不能有空格或换行。例如,{ $name}
会被视为普通文本,而非模板标签。
开发者可通过修改 template.php
配置文件自定义定界符:
// 普通标签定界符
'tpl_begin' => '<{',
'tpl_end' => '}>'
修改后,{name} 需写为 <{
XML 标签功能更强大,支持变量输出、文件包含、条件控制、循环输出等,并可通过自定义标签库扩展功能。默认情况下,标签库标签与普通标签共享 {
和 }
定界符,但可单独配置:
// 标签库标签定界符
'taglib_begin' => '<',
'taglib_end' => '>'
例如,条件语句:
{eq name="name" value="value"}
相等
{else/}
不相等
{/eq}
修改定界符后,需调整为:
<eq name="name" value="value">
相等
<else/>
不相等
</eq>
这种灵活性确保了与不同编码风格和编辑器的兼容性。
composer安装
composer require topthink/think-template
在webman框架中使用,修改配置config/view.php
为
<?php
use support\view\ThinkPHP;
return [
'handler' => ThinkPHP::class
];
控制器app/controller/UserController.php
如下
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function hello(Request $request)
{
return view('user/hello', ['name' => '开源技术小栈']);
}
}
视图文件app/view/user/hello.html
如下
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>webman</title>
</head>
<body>
hello {$name}
</body>
</html>
更多文档参考:https://www.kancloud.cn/manual/think-template