# ThinkPHP6 模版
* `ThinkPHP` 内置了一个基于 `XML` 的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了 `XML` 标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
* `config/template.php` 文件可以进行模版设置
---
**标签类型**|**描述**
---|---
普通标签|主要用于输出变量、函数过滤和做一些基本的运算操作
XML标签|也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展
## 一、普通标签
### 1、普通标签标记
* `config/template.php` 文件里的 `tpl_begin` 和 `tpl_end` 设置普通标签标记
```php
示例:
return [
// 模板引擎普通标签开始标记
'tpl_begin' => '{',
// 模板引擎普通标签结束标记
'tpl_end' => '}'
];
```
### 2、模版 变量输出
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
View::assign('n','ouyangke');
$data = [
'name' => 'PHP中文网',
'teacher' => [
'ouyangke' => '欧阳克',
'huangrong' => '黄蓉'
]
];
View::assign($data);
return View::fetch();
}
}
```
```html
html示例:
<div>我是 {$n}</div>
<div>学校:{$name}</div>
<div>讲师1:{$teacher.ouyangke}</div>
<div>讲师2:{$teacher.huangrong}</div>
```
### 3、模版 系统变量
* 系统变量则不需要赋值,直接在模版中使用
* 支持输出 `$_SERVER` `$_ENV` `$_POST` `$_GET` `$_REQUEST` `$_SESSION` `$_COOKIE` 变量
```html
html示例:
<div>{$Think.server.HTTP_HOST}</div>
```
### 4、模版 函数
**方法**|**描述**
---|---
default|默认值
md5|md5加密
date|日期格式化(支持各种时间类型)
format|字符串格式化
upper|转换为大写
lower|转换为小写
first|输出数组的第一个元素
last|输出数组的最后一个元素
substr|返回字符串的一部分
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
'pwd' => '123456',
'time' => '1561016803',
'number' => 123123234.434,
'up' => 'ouyangke',
'lo' => 'HangRong',
'arr' => [
'ouyangke' => '欧阳克',
'huangrong' => '黄蓉',
'guojing' => '郭靖'
],
'sub' => '欧阳克'
];
View::assign($data);
return View::fetch();
}
}
```
```html
<div>{$name|default='PHP中文网'}</div>
<div>{$pwd|md5}</div>
<div>{$time|date="Y-m-d H:i:s"}</div>
<div>{$number|format='%02d'}</div>
<div>{$up|upper}</div>
<div>{$lo|lower}</div>
<div>{$arr|first}</div>
<div>{$arr|last}</div>
<div>{$sub|substr=0,3}</div>
```
### 5、模版 运算符
**方法**|**描述**
---|---
`+`|加法
`-`|减法
`*`|乘法
`/`|除法
`%`|取余
`++`|加加
`--`|减减
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
'a' => 100,
'b' => 21
];
View::assign($data);
return View::fetch();
}
}
```
```html
html示例:
<div>{100+21} = {$a+$b}</div>
<div>{100-21} = {$a-$b}</div>
<div>{100*21} = {$a*$b}</div>
<div>{100/21} = {$a/$b}</div>
<div>{100%21} = {$a%$b}</div>
<div>{100++} = {$a++}</div>
<div>{100--} = {$a--}</div>
```
### 6、模版 原样输出
```php
<?php
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
'name' => '欧阳克'
];
View::assign($data);
return View::fetch();
}
}
```
```html
html示例:
<div>
{literal}
Hello,{$name}!
{/literal}
</div>
```
### 7、模版 注释
```html
html示例:
{// 这是单行注释 }
{/* 这是多行注释 */}
<div>欧阳克</div>
```
### 8、模版 包含文件
```html
html示例:
{include file="public/header" /}
<div>这是内容</div>
{include file="public/bottom" /}
```
```html
header文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>被包含文件</title>
</head>
<body>
```
```html
bottom文件:
</body>
</html>
```
---
## 二、XML标签
### 1、XML标签标记
* `config/template.php` 文件里的 `tpl_begin` 和 `tpl_end` 设置普通标签标记
```php
示例:
return [
// 标签库标签开始标记
'taglib_begin' => '{',
// 标签库标签结束标记
'taglib_end' => '}'
];
```
### 2、循环标签
* `FOREACH` 标签
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
['id' => 1,'name' => '欧阳克'],
['id' => 2,'name' => '黄蓉'],
['id' => 3,'name' => '郭靖']
];
View::assign($data);
return View::fetch();
}
}
```
```html
html示例:
{foreach $data as $key => $value }
<div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div>
{/foreach}
```
* `VOLIST` 标签
> name 要循环的数组
> id 循环赋值
> key 下标
> offset 开始位置
> length 循环长度
```html
html示例:
{volist name="data" id="value" key="key" }
<div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div>
{/volist}
{volist name="data" id="value" key="key" offset="1" length="2"}
<div>key:{$key} --- id:{$value.id} --- 姓名:{$value['name']}</div>
{/volist}
```
> foreach下标是0开始,volist下标是1开始
* `FOR` 标签
> start 开始值
> end 结束值
> step 步进值
> name 循环变量名
```html
{for start="10" end="100" name="a" step="5" }
<div>{$a}</div>
{/for}
```
### 3、条件判断标签
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
'name' => 'huangrong',
'number' => 100
];
View::assign($data);
return View::fetch();
}
}
```
* `SWITCH` 标签
```html
{switch $name }
{case ouyangke}
<div>我是欧阳克</div>
{/case}
{case huangrong}
<div>我是黄蓉</div>
{/case}
{default /}
<div>我是主讲</div>
{/switch}
```
* `IF` 标签
```html
{if $number >= 90}
<div>优秀</div>
{elseif $number >= 60 /}
<div>及格</div>
{else /}
<div>不及格</div>
{/if}
```
* `IN` 标签
```html
{in name="number" value="99,100,101"}
<div>在范围内</div>
{/in}
```
* `NOTIN` 标签
```html
{notin name="number" value="102,103,014"}
<div>不在范围内</div>
{/notin}
```
* `BETWEEN` 标签
```html
{between name="number" value="99,200"}
<div>在范围内</div>
{/between}
```
* `NOTBETWEEN` 标签
```html
{notbetween name="number" value="A,Z"}
<div>不在范围内</div>
{/notbetween}
```
### 4、比较标签
**标签**|**含义**
---|---
eq或者 equal|等于
neq 或者notequal|不等于
gt|大于
egt|大于等于
lt|小于
elt|小于等于
heq|恒等于
nheq|不恒等于
```php
php示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
$data = [
'name' => '欧阳克',
'number' => 100
];
View::assign($data);
return View::fetch();
}
}
```
```html
html示例:
{eq name="name" value="欧阳克"}
<div>相等</div>
{/eq}
{neq name="name" value="黄蓉"}
<div>不相等</div>
{/neq
{gt name="number" value="5"}
<div>大于5</div>
{/gt}
{egt name="number" value="100"}
<div>大于等于100</div>
{/egt}
{lt name="number" value="234"}
<div>小于234</div>
{/lt}
{elt name="number" value="100"}
<div>小于100</div>
{/elt}
{eq name="name" value="黄蓉"}
<div>相等</div>
{else/}
<div>不相等</div>
{/eq}
```
> 备注:每个标签都可以增加 `{else/}` 判断标签
- 序言
- PHP基础
- 认识PHP
- 环境安装
- PHP语法
- 流程控制
- PHP数组
- PHP函数
- PHP类与对象
- PHP命名空间
- PHP7新特性
- PHP方法库
- PHP交互
- 前后端交互
- 项目常规开发流程
- MySQL数据库
- 会话控制
- Ajax分页技术
- 细说函数
- 类与对象
- 对象进阶
- 类与对象进阶
- OOP面向对象
- 设计模式
- 路由与模板引擎
- 异常类
- PHP爬虫
- PHP抓取函数
- PHP匹配函数
- 正则表达式
- PHP字符串函数
- 抓取实战
- PHP接口
- 了解接口
- PHP插件
- PHPSpreadsheet
- ThinkPHP6
- 安装
- 架构
- 数据库
- 数据库操作
- 视图
- 模版
- 模型
- 杂项
- 命令行
- 交互
- 微信小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- 百度小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- Linux
- 服务器上线流程
- 安装svn
- MySQL
- 认识MySQL
- MySQL函数
- 杂项
- composer依赖管理工具