# 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依賴管理工具