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代码 |
注:别担心,孰能生巧!