ThinkPHP
文章平均质量分 50
国内 PHP框架
辰风沐阳
优秀的判断力来自经验,但经验来自于错误的判断
展开
-
TP6.0 前置、后置中间件区别
文章目录1. 创建中间件2. 注册中间件3. 前置、后置中间件4. 前置、后置中间件的区别5. 后置中间件登录拦截器(不推荐)6. 前置中间件登录拦截器(推荐使用)1. 创建中间件命令行创建中间件类文件示例// app\middleware\Authphp think make:middleware Auth// app\middleware\admin\Authphp think make:middleware admin/Auth// app\admin\middleware\Aut原创 2021-12-05 20:08:42 · 2036 阅读 · 0 评论 -
TP6.0 自定义异常处理类
1. 拷贝框架自带的 应用异常处理类, 另存一份复制 app/ExceptionHandle.php, 另存为 app/ApiExceptionHandle.php在 ApiExceptionHandle.php 中的 render() 方法中 自定义异常处理机制public function render($request, Throwable $e): Response{ // 添加自定义异常处理机制 if ( $e instanceof HttpException ) {原创 2021-04-30 01:02:32 · 1110 阅读 · 0 评论 -
TP6.0 调试模式下关闭Trace调试
1. 在 TP6.0 当前最新版 (v6.0.7) 中默认安装的时候会自动安装 topthink/think-trace 扩展在调试模式下浏览器右下角会出现trace信息, 此时无法手动关闭 Trace 调试, 只有切换到部署模式 trace 调试才会关闭2. 如何在调试模式下关闭 trace 调试在TP6.0最新版中, 调试模式下是无法关闭 trace 调试的但是可以通过移除 topthink/think-trace 扩展来关闭 trace 信息通过查看框架根目录下的 composer.j原创 2021-04-21 00:39:27 · 2184 阅读 · 0 评论 -
TP6.0 自定义命令创建类文件
文章目录一、修改框架核心扩展包1. 新增指令配置项2. 创建逻辑层类文件模板3. 创建 `Logic.php` 文件4. 执行命令, 创建逻辑层类文件二、不用修改框架源码1. 创建一个自定义命令类文件 (以逻辑层类文件为例)2. 复制创建模型类的命令定义文件内容3. 拷贝命令行生成模型类的模板4. 将自定义命令添加到指令配置文件 `config\console.php`5. 执行自定义命令, 创建逻辑层类文件一、修改框架核心扩展包1. 新增指令配置项打开文件vendor\topthink\fram原创 2021-04-11 01:11:59 · 893 阅读 · 0 评论 -
TP5.0、TP5.1、TP6.0 下载方式及环境要求
文章目录1. TP5.0 下载方式和环境要求2. TP5.1 下载方式和环境要求3. TP6.0 下载方式和环境要求4. 为什么 composer create-project 下载的不是最新版本5. 总结1. TP5.0 下载方式和环境要求**TP5.0 环境要求:PHP版本 >= 5.4 **PHP版本:PHP >= 5.4.0PHP扩展:PDO PHP Extension、MBstring PHP Extension、CURL PHP ExtensionThinkPHP5.0原创 2020-10-01 20:17:07 · 776 阅读 · 1 评论 -
TP6.0 一对多模型关联 hasMany
PHP技术群: 159789818ThinkPHP技术群: 828567087本文测试关联方法都采用预载入查询$data = Article::with('comments')->select();halt($data->toArray());1. 创建数据表-- 文章表CREATE TABLE `article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT原创 2020-08-16 21:33:39 · 3668 阅读 · 2 评论 -
TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)
1. 创建数据表一对一反向关联使用率很高附表关联主表称为反向关联,又称为相对关联(tp官方手册这样叫)-- 分类表CREATE TABLE `category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(255) DEFAULT NULL COMMENT '分类名称', `sort` int(11) DEFAULT NULL COMMENT '分类排序', PRIM原创 2020-08-15 14:01:41 · 2695 阅读 · 0 评论 -
TP6.0 一对一模型关联 hasOne
ThinkPHP技术群: 8285670871. 数据表创建做测试用的表-- 用户表DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id', `username` varchar(255) NOT NULL COMMENT '用户名', `password` char(32) DEFAULT NULL COMMENT原创 2020-08-14 23:04:04 · 2889 阅读 · 0 评论 -
TP6.0 获取请求对象的五种方式
文章目录1. 门面类2. 依赖注入3. 框架提供的基础控制器的 `request` 属性4. request() 助手函数5. app() 超级助手函数think\Request、think\facade\Request、app\Request 之间的联系官方手册原文当前的请求对象由think\Request类负责,该类不需要单独实例化调用,通常使用依赖注入即可。在其它场合则可以使用think\facade\Request静态类操作。项目里面应该使用app\Request对象,该对象继承了系统的t原创 2020-08-13 14:13:23 · 1214 阅读 · 0 评论 -
TP6.0 助手函数 env()
env 助手函数用于获取快速获取环境变量配置,复制框架根目录下的 .example.env 文件,另存为 .env 文件,即可读取环境变量配置,本文记录三种读取方式ThinkPHP技术群: 8285670871. 门面类\think\facade\Env::get('database.ussername', '默认值');2. env() 助手函数a. 不传参数,返回一个数组,包含根目录下的 .env 文件的所有信息$arr = env();dump($arr);b. 读取一.原创 2020-08-11 21:15:46 · 1841 阅读 · 0 评论 -
TP6模型类在PhpStorm中没有方法提示
用惯了 Phpstorm 的话,敲代码没方法提示令人不适,TP6模型类没方法提示因为缺少文档注释,可以将 tp5.1 的注释拿到tp6.0中,使其有方法提示1. 找到tp5.1的框架模型类源码文件源码文件:thinkphp\library\think\Model.php复制 \think\Model 文档注释中的 @method没有 select() 的方法提示2. 刚复制的 @method 粘贴到 TP6.0 的 \think\Model 中源码文件:vendor\topthink.原创 2020-08-10 21:06:58 · 1746 阅读 · 1 评论 -
TP6.0 命令行生成类库文件
1. 生成控制器// 默认生成资源控制器,有七个方法资源操作方法// index、create、save、read、edit、update、deletephp think make:controller Blog// 创建多级控制器php think make:controller user/Blog// 创建index应用下的Blog控制器php think make:controller index@Blog// 创建多级控制器php think make:controller原创 2020-08-01 22:01:38 · 318 阅读 · 0 评论 -
TP6.0多应用模式隐藏路由中的应用名
本文默认采用的是多应用模式1. 多应用模式中隐藏路由中的应用名的三种方式域名绑定应用增加应用入口入口文件绑定应用2. 域名绑定应用修改全局配置文件 config/app.php// 域名绑定(自动多应用模式有效)'domain_bind' => [ '*' => 'index', 'liang' => 'admin'],假设根域名为 tp.cy, 此时访问二级域名 liang.tp.cy 自动访问 admin .原创 2020-07-28 23:57:32 · 971 阅读 · 0 评论 -
TP6.0中的密码验证逻辑、验证器的使用
文章目录1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码2. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码编辑用户表单<form action="" method="post"> 用户名 <input type="text" name="username" value="liang" readonly autocomplete="off"&原创 2020-07-28 23:24:35 · 924 阅读 · 0 评论 -
ThinkPHP6.0多应用模式路由
在TP6中如果采用了多应用模式,每个应用的路由定义和匹配都是独立的应用路由都在 app/应用/route 目录下定义,应用路由定义文件示例如下:app/index/route/web.phpapp/index/route/api.phpapp/admin/route/web.php特别注意:好好体会这句话应用的路由规则其实是定义的入口文件(或者应用名)后面的URL部分,而不包含应用。控制器方法默认访问方式(pathinfo):/应用/控制器/方法应用路由定义的只是应用后面的部分:.原创 2020-07-16 23:43:41 · 6168 阅读 · 2 评论 -
ThinkPHP6.0 模型搜索器的使用
搜索器用于封装查询条件表达式,必须在模型中定义,只有使用模型操作数据时才能用搜索器。调用搜索器时使用的是数据表字段,可以不用定义搜索器方法,默认是 = 条件;如果不是数据表字段,必须定义对应的搜索器方法。1. 调用搜索器直接调用,默认查询条件是 =UserModel::withSearch(['name'], ['name' => '张三']) ->fetchSql(true) ->select();SELECT * FROM `user` WHERE `.原创 2020-07-09 21:16:45 · 1368 阅读 · 0 评论 -
ThinkPHP6.0 判断是否有文件上传
有必要考虑不是post请求或没有指定enctype="multipart/form-data"的情况。如果是post请求还是设置了正确的编码,没有文件上传时 request()->file(‘文件字段域’) 会抛出异常,捕获该异常即可。ThinkPHP6.0 判断是否有文件上传// 捕获异常try { // 此时可能会报错 // 比如:上传的文件过大,超出了配置文件中限制的大小 $file = request()->file('img'); // 如果表.原创 2020-07-09 08:31:30 · 666 阅读 · 0 评论 -
阿里云短信服务验证码封装类 - PHP
本文记录在ThinkPHP6.0中使用阿里云短信验证码,该封装类不仅仅局限于TP,拿来即用个人技术博客:https://www.itqaq.com使用该类之前必须引入 flc/dysms 扩展,该封装类就是基于这个扩展写的composer require flc/dysms<?php// 本文件放入TP6.0的extend目录下 extend/Dysms.phpuse Flc\Dysms\Client;use Flc\Dysms\Request\SendSms;// 获取类.原创 2020-07-08 20:33:51 · 771 阅读 · 0 评论 -
ThinkPHP6.0 多应用模式 部署 Layuiadmin 单页版
TP6.0中的路由省略应用名只能用入口文件绑定应用 和 域名绑定应用,经过测试,最后得出域名绑定应用是最合适的部署方式。如果有更好的部署方案,欢迎分享。QQ:234269451. 下载TP6.0,引入多应用模式扩展composer create-project topthink/think tp6composer require topthink/think-multi-app2. 配置多个虚拟域名(多个域名用于域名绑定应用)apache虚拟主机配置文件:conf/extra/httpd.原创 2020-07-06 23:07:17 · 1536 阅读 · 0 评论 -
单应用模式 - Layuiadmin单页版放入TP6.0的部署方案
thinkphp6.0.3单应用模式、layuiadmin1.4.0单页版,不需要tp的视图驱动1. 复制 src、start 两个文件夹2. 粘贴到 thinkphp 的 public 目录下3. 修改宿主页面layuiadmin资源路径、配置实现缓存缓存4. 访问首页使其重定向到layuiadmin主页5. 访问域名 自动重定向到 域名/start...原创 2020-07-06 14:28:40 · 846 阅读 · 0 评论 -
ThinkPHP6.0 扩展类库目录(extend)
框架根目录下的 extends 目录称为 扩展类库目录,用于存放一些自定义的类,只要符合自动加载的规范(命名空间、类名、文件名),就可以拿来直接使用1. extend 目录的直接子内容假设在 extend 目录下创建一个 Upload.php 文件,如果是 extend 目录的直接子内容则不需要添加命名空间<?phpclass Upload{ }此时可以在控制器中直接使用 \Upload 类,特别注意命名空间2. 带层级的类假设在 extend/file 目录下创建一个.原创 2020-07-01 23:52:28 · 5589 阅读 · 0 评论 -
ThinkPHP6.0视图驱动扩展
在TP5.*系列中可以直接使用view()助手函数渲染模板,但是在ThinkPHP6.0中渲染模板文件必须先引入视图扩展才能正常使用,否则将会抛出错误,使用composer引入视图驱动即可解决:composer require topthink/think-view(视图驱动扩展)一. 未引入视图驱动直接渲染模板<?phpnamespace app\controller;use app\BaseController;class Index extends BaseControll.原创 2020-07-01 21:37:45 · 427 阅读 · 0 评论 -
ThinkPHP6.0 文件上传封装类
TP6.0内置文件上传只是上传到本地服务器,上传到远程或者第三方平台的话需要安装额外的扩展,本文章对基于TP6.0的内置文件上传进行封装。1. 使用方法简单示例// 返回数组Upload::putFile('磁盘', '文件字段域', '目录名');Upload::putFile('public', 'img');Upload::putFile('public', 'img', 'thumb');上传成功和 上传失败 时的返回值2. 文件上传封装类<?php// 本文原创 2020-07-01 21:20:42 · 971 阅读 · 0 评论