文章目录
-
- 开发手册
- 一. MVC
- 二. 安装 composer
- 三. 下载安装tp6源码 与 视图
-
- 3.1 tp6 安装
- 3.2 视图安装
- 3.3 视图的理解
- 3.4 模板变量
- 3.5 视图应用
-
- 3.5.1 标签的运算符
- 3.5.2 模板函数
- 3.5.3 循环标签
- 3.5.4 volist 循环标签
- 3.5.5 if 判断标签
- 3.5.6 switch 判断标签
- 3.5.7 文件包含
- 四. 单应用多应用切换
- 五. 一些关键目录与文件
-
- 5.1 单应用模式目录
- 5.2 多应用模式目录
- 六. 系统环境配置
开发手册
https://www.kancloud.cn/manual/thinkphp6_0
一. MVC
model view controller
- 控制器:负责转发请求,处理请求
- 视图:图像界面设计
- 模型:功能算法等具体功能
二. 安装 composer
https://docs.phpcomposer.com/
https://www.phpcomposer.com/
三. 下载安装tp6源码 与 视图
3.1 tp6 安装
https://packagist.org/packages/topthink/think
在web目录下执行安装
安装测试
查看当前安装的tp6版本
php think version
thinkphp6 测试
3.2 视图安装
tp6 的 视图由 \think\View 类配合驱动(模板引擎驱动类),新版仅内置了 PHP 原生的模板引擎,所以需要自行下载相关TP引擎拓展
在 composer 仓库中可找到相关扩展
https://packagist.org/
composer require topthink/think-view
3.3 视图的理解
- Index类对应view下面的目录
- index方法对应view下面的目录里的静态文件
3.4 模板变量
- assign() :方法赋值属于全局变量赋值
- 模板输出
{$name}
控制器
class Index extends BaseController
{
public function index(){
// 模板变量赋值View::assign('name','wpsec');View::assign('email','123@admin.com');
// 在数组中批量赋值View::assign(['name' => '张三','email' => '321@admin.com']);return View::fetch();}
视图
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
姓名:{
$name}
<br>
邮箱:{
$email}
</body>
</html>
3.5 视图应用
标签的一些基础知识
- 普通标签:主要用于输出变量,函数过滤和一些基本运算操作
- XML标签:标签库标签,主要用于逻辑判断,控制和循环输出,并且可扩展
3.5.1 标签的运算符
控制器文件
public function index(){
View::assign('a',100);View::assign('b',21);return View::fetch();
}
视图文件
<div>{$a+$b}</div>
<div>{$a-$b}</div>
<div>{$a*$b}</div>
<div>{$a/$b}</div>
<div>{$a%$b}</div>
<div>{$a++}</div>
<div>{++$a}</div>
<div>{$a--}</div>
<div>{--$a}</div>
<div>{$c ? '存在' : '不存在'}</div>
3.5.2 模板函数
控制器文件
public function index(){
View::assign('time',1576048640);View::assign('num',10.0032);View::assign('str','OUyangKE');View::assign('arr',['张三','李四','王二']);return View::fetch();
}
视图文件
<div>{$time|date='Y-m-d H:i:s'}</div>
<div>{$num|format='%02d'}</div>
<div>{$str|upper}</div>
<div>{$str|lower}</div>
<div>{$arr|first}</div>
<div>{$arr|last}</div>
<div>{$default|default="张三"}</div>
<div>{$str|substr=0,3}</div>
<div>{$str|md5}</div>
<div>{$str|lower|substr=0,3}</div>
3.5.3 循环标签
- foreach 标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性
控制器文件
public function index(){
$arr = [['id' => 1,'name' => '张三'],['id' => 2,'name' => '李四'],['id' => 3,'name' => '王二']];View::assign('arr',$arr);return View::fetch();
}
视图文件
{foreach $arr as $v}<div><span>ID:{$v['id']}</span><span>姓名:{$v['name']}</span></div>
{/foreach}
3.5.4 volist 循环标签
- 二维数组的结果输出
- name 模板赋值的变量名称
- id 当前的循环变量,可以随意起名
- key 下标,从1开始,默认变量i
- offset 开始行数
- length 获取行数
- empty 如果数据为空,显示此文字
视图文件
{volist name="arr" id="v" key="k" offset="1" length="2"}<div><span>ID:{$v['id']}</span><span>姓名:{$v['name']}</span><span>下标:{$k}</span></div>
{/volist}
3.5.5 if 判断标签
控制器文件
public function index(){
View::assign('status',1);View::assign('order_status',4);return View::fetch();
}
视图文件
{if $status == 1}<div>开启</div>
{/if}{if $status == 0}<div>关闭</div>
{else/}<div>开启</div>
{/if}{if $order_status == 0}<div>未支付</div>
{elseif $order_status == 1/}<div>已支付 待发货</div>
{elseif $order_status == 2/}<div>已发货 待收货</div>
{elseif $order_status == 3/}<div>已收货 待评论</div>
{elseif $order_status == 4/}<div>已完成</div>
{/if}
3.5.6 switch 判断标签
视图文件
{switch $order_status}{case 0 }<div>未支付</div>{/case}{case 1 }<div>已支付 待发货</div>{/case}{case 2 }<div>已发货 待收货</div>{/case}{case 3 }<div>已收货 待评论</div>{/case}{case 4 }<div>已完成</div>{/case}
{/switch}
3.5.7 文件包含
- include 标签,引入模版文件
- load 标签,引入资源文件(css、js)
{include file="public/header" /}
{include file="public/left" /}{load href="/static/layui/css/layui.css" /}
{load href="/static/layui/layui.js" /}{include file="public/tail" /}
四. 单应用多应用切换
修改public 下的 .htaccess 文件,将访问路径重写到index.php/的最后面,在 index.php 后加入一个?,将兼容路由,不在显示index.php,直接在后面跟应用路径
多应用插件
下载插件
composer require topthink/think-multi-app
修改config/app.php中的 开启多应用自动加载 auto_multi_app => true
, 如果没有的话不用更改 然后就可以正常访问了
tp6的应用默认在index目录下,没有的自己创建,创建好后把controller目录放进去
五. 一些关键目录与文件
5.1 单应用模式目录
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─ ... 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
5.2 多应用模式目录
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─app_name 应用目录
│ │ ├─common.php 函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ ├─route 路由目录
│ │ └─ ... 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 全局配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
六. 系统环境配置
官方推荐使用环境变量的方式管理配置项(config目录)
环境变量管理
它是一个类文件,命名空间为:think\facade\env
写在一个叫 .env 的环境变量管理器里,没有的自己创建
书写配置项规则一般使用下划线法:
配置文件名 下划线 配置项
;开启跟踪器
app_trace = true
;开启调试模式
app_debug = true;数据库配置项
database_type = 'mysql'
database_hostname = '127.0.0.1'
database_database = 'tp6'
database_username = 'root'
database_password = 'root'
database_hostport = '3306'
database_charset = 'utf8'
database_debug = true
然后回到刚刚配置的配置文件中
使用 use 导入 env 这个类,命名空间为:think\facade\env
导入之后就可以使用 env 这个类中的方法了,修改源配置文件,使用get()方法让这个配置文件受我们的 环境变量管理器控制。
测试环境变量是否生效