当前位置: 代码迷 >> 综合 >> PHP 开发 ThinkPHP6 框架学习 一
  详细解决方案

PHP 开发 ThinkPHP6 框架学习 一

热度:90   发布时间:2023-12-24 05:56:06.0

文章目录

    • 开发手册
    • 一. 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()方法让这个配置文件受我们的 环境变量管理器控制。

请添加图片描述

测试环境变量是否生效

请添加图片描述