首页 > 编程知识 正文

tp6框架,tp6开发教程

时间:2023-05-06 19:03:48 阅读:242485 作者:1811

导读

本章主要讲解了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 thinkfacadeRequest;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 thinkfacadeDb;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()方法转换为数组同时要注意:因为是对象所以可以->调用,也可以像数组一样访问我们的对象模型获取器的场景包括: - 时间日期字段的格式化输出; - 集合或枚举类型的输出; - 数字状态字段的输出; - 组合字段的输出;例如,我们需要对状态值进行转换,可以使用:<?phpnamespace appmodel;use thinkModel;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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。