Thinkphp6——基础与视图篇
- ThinkPHP支持传统的MVC(Model-View-Controller)模式以及流行的MVVM(Model-View-ViewModel)模式的应用开发
一、MVC
MVC软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)ThinkPHP是一个典型的MVC架构
控制器 - 负责转发请求,对请求进行处理。
视图 - 界面设计人员进行图形界面设计。
模型 - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

二、单应用模式访问
index.php 入口文件,在tp6/public目录下
index 控制器
index 操作
1 | ├─app 应用目录 |
三、安装视图
- 视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎(主要用于内置的异常页面输出),如果需要使用其它的模板引擎需要单独安装相应的模板引擎扩展
- 因此,你需要在命令行运行下面这行指令:
composer require topthink/think-view
- 视图目录可以在根目录,也可以在app应用目录
四、模版渲染
- 要使用View,必须先引入
think\facade\View门面类 fetch方法渲染页面
controller代码
1 |
|

- 注:一个控制器的类对应一个view视图的目录,这个类中的方法,对应这个目录中的html页面
五、模版变量
- 在控制器中使用
assign方法给全局变量赋值,这个变量也叫作模板变量
注:要区分模板和模型的概念 - 在视图页面中使用
{$name}输出模板变量值
controller代码
1 | namespace app\controller; |
view代码
1 |
|
六、模板引擎
我们在页面中使用
{$var}输出变量,还可以借助标签,实现更多的功能。模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的。
标签类型 描述 普通标签 主要用于输出变量、函数过滤和做一些基本的运算操作 XML标签 也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展
普通标签
运算符
| 运算符 | 示例 |
|---|---|
| + | {$a+$b} |
| - | {$a-$b} |
| * | {$a*$b} |
| / | {$a/$b} |
| % | {$a%$b} |
| ++ | {$a++} 或 {++$a} |
| – | {$a–} 或{–$a} |
| 综合运算 | {$a+$b*10+$c} |
| 三元运算符 | {$a==$b ? ‘yes’ : ‘no’} |
view文件
1 | <div>{$a+$b}</div> |
模版函数
| 方法 | 描述 |
|---|---|
| date | 日期格式化(支持各种时间类型) |
| format | 字符串格式化 |
| upper | 转换为大写 |
| lower | 转换为小写 |
| first | 输出数组的第一个元素 |
| last | 输出数组的最后一个元素 |
| default | 默认值 |
| raw | 不使用(默认)转义 |
| md5 | md5加密 |
| substr | 截取字符串 |
view文件
1 | <div>{$time|date='Y-m-d H:i:s'}</div> |
注:
$var|后面接函数
XML标签
foreach循环标签
foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性。view文件
1
2
3
4
5
6{foreach $arr as $v}
<div>
<span>ID:{$v['id']}</span>
<span>姓名:{$v['name']}</span>
</div>
{/foreach}
volist循环标签
- 二维数组的结果输出
name模板赋值的变量名称id当前的循环变量,可以随意起名key下标,从1开始,默认变量ioffset开始行数length获取行数empty如果数据为空,显示此文字
view文件
1 | {volist name="arr" id="v" key="k" offset="1" length="2"} |
if 判断标签
view文件
1 | {if $status == 1} |
switch 判断标签
view文件
1 | {switch $order_status} |
包含文件
include标签,引入模版文件load标签,引入资源文件(css、js)
view文件,把头部和尾部分文件
1 | {include file="public/header" /} |
其他标签
- 条件标签
| 标签 | 描述 |
|---|---|
| in | 判断变量是否存在某些值 |
| notin | 判断变量是否不存在某些值 |
| between | 判断变量是否存在某些值 |
| notbetween | 判断变量是否不存在某些范围值 |
| present | 判断某个变量是否 已定义 |
| notpresent | 判断某个变量是否 未定义 |
| empty | 判断某个变量是否为空 |
| notempty | 判断某个变量是否不为空 |
| defined | 判断某个常量是否 已定义 |
| notdefined | 判断某个常量是否 未定义 |
- 比较标签
| 标签 | 描述 |
|---|---|
| eq | 等于 |
| neq | 不等于 |
| gt | 大于 |
| egt | 大于等于 |
| lt | 小于 |
| elt | 小于等于 |
| heq | 恒等于 |
| nheq | 不恒等于 |
- 循环标签
| 标签 | 描述 |
|---|---|
| for | 计数循环 |
- 杂项标签
| 标签 | 描述 |
|---|---|
| literal | 原样输出 |
| php | 使用原生php代码 |
注:别担心,孰能生巧!