导读

本章主要讲解了TP5/TP6异同之处,基础的控制器层、模型层的使用,杜绝无效请求让代码更加健壮,数据库层问题排查解决方案,这些内容都是为后续电商实战做完美铺垫。

TP5和TP6的异同之处

  • 目录结构异同
tp5的框架目录在thinkphp,而tp6的框架项目在vendor下,所以tp6就只能用composer 的方式进行安装;
  • 安装方式异同
tp5支持composer安装和官网下载源码安装包,而tp6只支持composer的方式进行安装
  • 类自动加载方式不同
tp6使用composer机制的加载方式来实现类的自动加载,tp5是自己实现了一套类的加载机制再结合composer进行加载
  • 严格模式

  • 支持更多的PSR规范
PHP PSR标准规范 https://learnku.com/docs/psr/basic-coding-standard/1605
  • 组件独立

    • orm

    • 模板引擎

  • 中间件改进

tp6开始使用管道模式来实现中间件,比起之前的版本更加简洁、有序
  • 引入filesystem组件

控制器巧用

  • 输出使用return即可

  • 输出json内容可以直接使用tp6提供的json方法

  • 控制器request属性绑定request对象
可追踪request对象的产生过程
BaseController中的__construct()
vendor/topthink/framework/src/think/App.php集成的父类container容器类
容器类中的__get()方法
get()方法创建出对象实例


  • TP6的参数获取方式
获取单个数据值同时进行类型转换$this->request->param('abc',1,'intval')使用依赖注入的形式public function index(Request $request){return $request->param('abc');
}使用助手函数input('abc');使用框架提供的request()方法request()->param('abc');门面模式静态调用use think\facade\Request;public function index(){return Request::param('abc');
}
  • 杜绝无效请求
开启TP的开发调试模式在.env文件中配置APP_DEBUG = true若访问方法不存在,可在BaseController中添加魔术方法__call()public function __call($name,$arguments){// 是APi请求 => JSON// 是模板引擎请求 => 页面
}若访问的控制器不存在,可建立一个Error控制器注意:名字是固定的同样是增加__call()方法即可
  • 通用化API数据格式数据
在common.php文件中封装show方法来返回通用格式的API数据

抽离状态码形成对应关系在config中建立status.php配置文件返回各种状态码


框架操作数据库

  • db库认知基础
注:orm独立出来了,与tp5不同
配置数据库:通过env文件来具体配置,目的是不同的环境下,如线上服务器的配置只需要使用本环境的env文件就可以直接更改配置了使用db:① tp5中使用DB方法直接use think/Db即可,tp6中必须使用门面才能使用use think\facade\Db;public function hello()
{$result =  Db::table("user")->where("id",10)->find();dump($result);
}② 通过容器app()来获取,tp6有,tp5没有public function hello()
{app('db')->table("user")->where("id", 10)->find();
}
  • db查询方式讲解
请参考手册:https://www.kancloud.cn/manual/thinkphp6_0/1037532CURD操作以及链式操作,在这里不做过多介绍
  • 非常实用的SQL问题排查方案
第一种:链式查询中嵌入:fetchsql()第二种:echo Db::getLastSql();
  • 模型初始
关于模型操作参考手册:https://www.kancloud.cn/manual/thinkphp6_0/1037579此处不做过多介绍
  • 模型查询其他使用
模型查询返回的是对象,可以toArray()方法转换为数组同时要注意:因为是对象所以可以->调用,也可以像数组一样访问我们的对象模型获取器的场景包括:- 时间日期字段的格式化输出;- 集合或枚举类型的输出;- 数字状态字段的输出;- 组合字段的输出;例如,我们需要对状态值进行转换,可以使用:<?php
namespace app\model;use think\Model;class User extends Model
{public function getStatusAttr($value){$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];return $status[$value];}
}
数据表的字段会自动转换为驼峰法,一般status字段的值采用数值类型,我们可以通过获取器定义,自动转换为字符串描述。$user = User::find(1);
echo $user->status; // 例如输出“正常”关于获取器的使用详见:https://www.kancloud.cn/manual/thinkphp6_0/1037588

TP6基础知识【新框架】相关推荐

  1. 计算机网络基础知识论文摘要,计算机网络基础知识论文大纲格式 计算机网络基础知识论文框架如何写...

    [100个]计算机网络基础知识论文大纲格式供您参考,希望能解决毕业生们的计算机网络基础知识论文框架如何写相关问题,写好提纲那就开始写计算机网络基础知识论文吧! 五.高职<计算机网络>课程活 ...

  2. 微型计算机基础 教案,第一章微型计算机基础知识新080902电子教案(153页)-原创力文档...

    第一章 微型计算机基础知识;第一章? 微型计算机基础知识;§1.1 计算机中数的表示方法;1.1.1 进位计数制及各计数制间的转换;二进制数的特点; 十进制--符合人们的习惯二进制--便于物理实现十六 ...

  3. 计算机基础知识 新浪博客,计算机基础知识试题选择题

    一.选择题((1)-(30)每小题1分,(31)-(55)每小题2分,共80分) 下列各题A) .B).C).D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分 ...

  4. python web框架 多线程_Django基础知识 web框架的本质详解

    姑娘,你好,我是Jaden,请问约吗?嘻嘻~~ alert('这是我们第一个网页')

  5. 计算机基础知识 新浪博客,计算机基础知识(1)

    1.2 微电子技术简介 集成电路根据它所包含的晶体管数目可以分为小规模.大规模.超大规模和极大规模集成电路(P4) 世界上第一台计算机于1946年2月诞生于美国的宾夕法尼亚大学 世界上第一台计算机于1 ...

  6. CSS基础知识: 框架

    CSS基础知识整理 框架 box 文章目录 CSS基础知识整理 框架 box 长度单位 颜色单位 框架(盒子) 边框 border 外边距 margin 外边距和并(垂直布局) overflow 高度 ...

  7. ##**iOS蓝牙开发(一)蓝牙相关基础知识**

    蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...

  8. java基础知识总结:基础知识、面向对象、集合框架、多线程、jdk1.5新特性、IO流、网络编程

    目录 一.基础知识: 二.面向对象 三.集合框架 四.多线程: 五.jdk1.5的新特性 六.IO流 七.网络编程: 一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtua ...

  9. python的django介绍_【Python基础知识】Django框架简介

    很多初学Python的小伙伴不知道该从何开始学起,其实零基础学习的话可以先学习一些Python基础知识,等基础打牢之后再去接触更加深入的技术,接下来小编就为大家简单介绍一下有关于 Django框架内容 ...

最新文章

  1. MAC软件下载比较好的三个第三方网站
  2. Flink SQL 功能解密系列 —— 解决热点问题的大杀器MiniBatch
  3. 牛听听 总是获取音频流出错_【伤感听听|推荐】大度 什么
  4. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 EventChannel 通信 )
  5. 端口复用和半关闭补充
  6. amchart折线图示例
  7. centos出现磁盘坏道,怎么检索和修复
  8. Codeforces 258B Little Elephant and Elections
  9. 华为P50 Pro最新渲染图曝光:后置造型有点奇怪
  10. 神经网络中常用激活函数总结【Python实现激活函数与导函数,曲线可视化分析】
  11. 第12章 决策树 学习笔记中
  12. RDP报表快速打造数据大屏可视化展示系统
  13. 菜鸟教程的Linux命令大全
  14. 安卓系统添加字体库和修改系统默认的字体
  15. 芯片流片(晶圆制造)工艺服务的流程。 细节详解连载
  16. tomcat服务器拒绝访问文件,tomcat拒绝访问特定文件
  17. 【华为OD机试真题 JAVA】两数之和绝对值最小
  18. 重置CAD 或者Civil 3d的所有环境
  19. 8321平台修改WIFI_ONLY总结
  20. 常微分方程的差分方法C语言,常微分方程差分方法.ppt

热门文章

  1. 《所谓高情商,就是会说话》思维导图精华分享
  2. 检测某个地图某个怪物的数量的脚本
  3. 图片展示(上面一个大图下面四个小图)
  4. 搜扣扣三大频道闹元宵 优惠券、聚划算、九块邮正式上线
  5. AutoJs学习-包名查看器
  6. 练习:测测你优势教养的程度
  7. AC自动机+状压dp hdu2825 Wireless Password
  8. day03_token获取到用户信息
  9. Caffe中的损失函数
  10. 最帅爬虫_豆瓣读书(加密数据获取)