Thinkphp
文章平均质量分 85
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架
优小U
Keep on learning as long as you live.
展开
-
ThinkPHP6项目基操目录
前言ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一原创 2020-12-13 14:41:02 · 13680 阅读 · 21 评论 -
ThinkPHP6项目基操(1.环境搭建及ThinkPHP6的安装)
环境搭建及ThinkPHP6.0的安装一、环境搭建二、安装ThinkPHP6.0一、环境搭建服务器:Nginx1.16.1 端口:80数据库:MySQL5.7.26 端口:3307PHP版本:V7.4.3 (TP6需要求PHP版本>7.1)安装过程根据环境不同自行百度,建议新手使用集成环境phpStudy.PHPStudy官网小皮(点击跳转)二、安装ThinkPHP6.06.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。composer原创 2020-11-28 17:08:55 · 3100 阅读 · 5 评论 -
ThinkPHP6项目基操(2.Nginx配置虚拟域名及简化访问路径)
Nginx配置虚拟域名及隐藏public和index.php路径一、phpStudy 创建网站二、隐藏index.php一、phpStudy 创建网站设置访问域名根目录填写项目目录到public目录注意勾选同步hosts确认PHP版本 > 7.1.0重启Nginx服务器可以直接访问 http://tp6.com/index.php/index/test(index/test是写在index控制器下的test方法)二、隐藏index.php如果希望隐藏index.php,直接访原创 2020-11-28 22:14:01 · 6736 阅读 · 9 评论 -
ThinkPHP6项目基操(3.控制器获取请求参数)
控制器获取请求参数一、新建 Demo 控制器二、获取参数的方法一、新建 Demo 控制器<?phpnamespace app\controller;use app\BaseController;class Demo extends BaseController{ public function request(){ dump($this->request->param()); }}浏览器访问:获取单个参数:$this->req原创 2020-11-28 22:52:38 · 4540 阅读 · 5 评论 -
ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)
拦截无效请求 控制器或方法不存在一、默认无效请求二、显示具体错误信息方法1.配置`config/app.php`方法2. 配置`.env`环境变量三、处理错误1. 方法不存在2. 控制器不存在一、默认无效请求当访问不存在的控制器或方法时,默认会显示如下页面:二、显示具体错误信息方法1.配置config/app.php如果想看具体的错误信息可以配置config/app.php'show_error_msg' => true配置后显示具体错误信息:方法2. 配置.env环境变量原创 2020-11-29 12:24:36 · 4785 阅读 · 7 评论 -
ThinkPHP6项目基操(5.封装API数据格式及业务状态码统一管理)
封装API数据格式及业务状态码统一管理一、封装API数据返回格式二、业务状态码统一管理一、封装API数据返回格式我们在返回API数据的时候,一般是使用json格式输出,如上节处理找不到控制器或方法返回数据:public function __call($name, $arguments){ // 如果是API模块,需要输出API的数据格式(一般是json) // 如果是模板引擎的方式,需要输出自定义错误页面 $result = [ 'status' =>原创 2020-11-29 15:06:01 · 4040 阅读 · 5 评论 -
ThinkPHP6项目基操(6.数据库Db操作)
数据库Db操作一、数据库配置二、访问数据库1. 使用门面模式的Db类2. 使用容器方式三、数据库返回数据异常调试1. 打开APP_DEBUG2. 打印SQL语句四、增删查改CURD操作1. 新增2. 删除3. 更新一、数据库配置config目录下默认有个database.php文件,这里配置了默认的数据库信息:<?phpreturn [ // 默认使用的数据库连接配置 'default' => env('database.driver', 'mysql'原创 2020-11-29 18:46:41 · 11190 阅读 · 5 评论 -
ThinkPHP6项目基操(7.模型)
模型一、模型的定义及基本使用二、模型查询及其他使用1. new 模型对象2. 模型获取器一、模型的定义及基本使用与Db操作数据库相比,使用模型Model类更方便。在controller文件夹同级目录新建文件夹model,再新建Model类,文件名与数据库的数据表名对应,如数据表为demo,那么模型类取名为Demo.php:<?phpnamespace app\model;use think\Model;class Demo extends Model{}在控制器中使用模型类:原创 2020-11-29 23:29:42 · 1650 阅读 · 2 评论 -
ThinkPHP6项目基操(8.多应用模式)
多应用模式一、 安装多应用模块二、 修改应用目录结构三、 多应用路由配置默认安装的TP6是但应用的,如果需要使用多应用模式,需要安装插件。一、 安装多应用模块composer require topthink/think-multi-app二、 修改应用目录结构之前单应用app目录结构为:安装多应用插件后,可以建立多个应用,如:建立demo应用,然后在demo目录下创建controller文件夹,这里存放控制器类(之前单应用的controller和model可以删除),每个应用下都可以创建单原创 2020-11-30 22:55:20 · 2950 阅读 · 2 评论 -
ThinkPHP6项目基操(9.架构分层)
架构分层一、分层意义二、代码架构三、common层设计一、分层意义意义我觉得最重要的是方便维护,如果代码没有分层,都是写在控制器里,包括了各种参数校验,各种情景判断,各种数据查询返回结果不同,十分混乱,出现问题很难定位,修改需求十分头疼,良好的分层架构可以解决后顾之忧。二、代码架构这里借用了某课网singwa老师的图,我又重新画了一遍,我们把代码分为以上5个模块,它们的作用分别为:模块作用控制器 controller负责调用业务层,返回组装数据给视图层或api接口业务原创 2020-12-01 00:03:57 · 6365 阅读 · 15 评论 -
ThinkPHP6项目基操(10.不可预知的內部异常处理)
不可预知的內部异常处理一、不可预知异常二、解决方案:1. 修改app目录下的ExceptionHandle.php2. 不同应用模块配置不同的错误信息格式3. throw异常处理一、不可预知异常如果方法里使用未定义的字段:public function aa(){ echo $aa;}访问页面就会出错:二、解决方案:1. 修改app目录下的ExceptionHandle.php修改app目录下的 ExceptionHandle.php的render方法,添加自定义的异常处理:p原创 2020-12-02 00:22:25 · 3480 阅读 · 9 评论 -
ThinkPHP6项目基操(11.实战部分 部署后台静态页面模板及后台登录页面)
实战部分 部署后台静态页面模板及后台登录页面前言一、部署静态资源到项目1.新建后台静态资源文件夹二、后台登录页面1. 目录结构2. 模板字符串替换配置前言网站后台一般是在基础静态页面上开发,将静态页面插入动态数据,首先我们先找一个后台网站模板,这里我使用的是layuiAdmin 后台管理模板,点击进入官网 ,这个框架是需要收费的,请购买正版商用。一、部署静态资源到项目1.新建后台静态资源文件夹在public/static目录下新建admin文件夹,将layuiAdmin的dist目录里的文件复制原创 2020-12-02 23:30:00 · 5329 阅读 · 17 评论 -
ThinkPHP6项目基操(12.实战部分 验证码)
验证码一、安装验证码二、模板中使用三、修改验证码配置四、自定义验证码1. 创建2. 配置3. 使用五、验证TP6 有内置验证码插件,只需简单安装和配置即可使用,而且验证码的验证也非常方便,下面开始表演。一、安装验证码composer require topthink/think-captcha二、模板中使用将原来静态页面的验证码图片替换为{:captcha_img()},这个会自动生成验证码图片。<div style="margin-left: 10px;"> {:captch原创 2020-12-03 23:49:15 · 2123 阅读 · 2 评论 -
ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面&API错误)
项目中的自定义异常处理总结 错误页面&API错误前言一、异常分类1. 控制器找不到2. 方法找不到3. 请求资源不存在4. 系统內部异常、HTTP异常等二、异常处理1. 前置处理2. 异常处理详细代码(1) 控制器找不到(2) 方法找不到(3) 请求资源不存在及系统错误异常三、异常检测前言 一般项目中路由分为返回模板引擎页面和返回api接口json数据,两种方式异常需要返回不同的内容,如果是模板引擎页面遇到异常需要返回错误页面,如果是api接口遇到异常需要返回json数据。 开发模式和上线原创 2020-12-08 00:23:35 · 9008 阅读 · 13 评论 -
ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)
中间件处理登录流程一、定义中间件二、前置/后置中间件三、注册中间件1. 全局中间件2. 应用中间件3. 路由中间件4. 控制器中间件5. 内置中间件四、中间件使用 -- 后台登录页面跳转流程1. 创建Auth中间件2. 注册应用中间件一、定义中间件<?phpnamespace app\middleware;class Check{ public function handle($request, \Closure $next) { if ($request原创 2020-12-08 21:32:07 · 5201 阅读 · 7 评论 -
ThinkPHP6项目基操(15.实战部分 阿里云短信redis)
阿里云短信调试阿里云短信SDK PHP文档安装SDKcomposer require alibabacloud/sdk原创 2020-12-12 23:30:35 · 9216 阅读 · 23 评论 -
ThinkPHP6项目基操(16.实战部分 redis+token登录)
redis+token登录前言一、生成唯一token二、设置token并返回token到前端三、登录拦截器(需要登录/不需登录)前言登录一般可以使用session处理,它使用比较简单,但是一般用在web端比较多。如果需要考虑在多端运行,使用redis+token方式更加方便,为啥使用redis而不是使用数据库存储token呢?当然数据库是可以存储的,后台可以请求数据库查询token字段,但是如果考虑高并发的情况,redis更加适合,一般查询用户信息的地方不会很多,判断用户是否登录的情况会比较多。一、生原创 2020-12-21 23:31:03 · 2015 阅读 · 2 评论 -
ThinkPHP6项目基操(17.实战部分 Filesystem文件上传)
Filesystem文件上传控制器:<?phpnamespace app\admin\controller;use app\BaseController;use think\facade\Filesystem;use think\facade\View;class Upload extends BaseController{ // 上传页面 public function index(){ return View::fetch("index"); }原创 2021-01-01 18:38:16 · 6341 阅读 · 8 评论 -
ThinkPHP6项目基操(18.实战部分 表单令牌Token 防CSRF)
表单令牌Token0. 前言1. TP6 令牌token使用1.1 表单提交1.2 AJAX提交2. TP6 令牌token验证2.1 路由验证2.2 控制器验证2.3 验证器验证0. 前言表单令牌是为了防止表单重复提交,防止跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF。1. TP6 令牌token使用1.1 表单提交如果使用了默认的模板引擎,可以直接使用下原创 2021-01-02 17:00:39 · 3192 阅读 · 3 评论 -
ThinkPHP6项目基操(19.实战部分 Mysql模型事务操作)
模型事务操作前言1. Mysql数据库注意2. thinkPHP模型使用事务前言事务操作在复杂的数据库操作的时候尤为重要,特别是在操作多张表的时候,如果某一步骤出错了,就会导致有脏数据,会很危险,比如A表操作完需要再操作B表,如果A表操作成功,B表操作失败,那么A表的数据需要回滚,否则A表就会有脏数据。这个时候事务处理就派上用场了。1. Mysql数据库注意使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。使用navca原创 2021-01-02 23:53:48 · 4526 阅读 · 3 评论 -
ThinkPHP6项目基操(20.实战部分 数据库操作返回值总结)
数据库操作返回值总结0. 前言1. Db类操作数据库1.1 新增1.2 更新1.3 删除1.3.1 单条删除1.3.2 批量删除1.4 查询1.4.1 单笔记录1.4.2 多笔记录2. Model模型类操作数据库2.1 新增2.2 更新2.2.1 单笔更新2.2.2 批量更新2.3 删除2.3.1 删除模型2.3.2 根据主键删除2.3.3 条件删除2.4 查询2.4.1 单笔记录2.4.2 多笔记录0. 前言1. Db类操作数据库1.1 新增$data = ['username' => 'b原创 2021-01-03 15:39:13 · 7811 阅读 · 10 评论 -
thinkPHP6.0 控制器请求方法延迟生效解决办法
使用thinkphp6开发项目,发现一个很神奇的问题,修改控制器后,会出现30秒的延迟,才能生效。这个不是thinkphp6框架的问题,是PHP7.x的问题,关闭opchche就行。找到php.ini下的opchche拓展:opcache.enable = 1...转载 2020-11-21 18:51:15 · 818 阅读 · 1 评论 -
thinkPHP 阿里云OSS 上传文件、直接下载
阿里云OSS 上传文件、直接下载1. 安装OSS SDKcomposer require aliyuncs/oss-sdk-php2. thinkPHP接口public function uploadFile(){ if (is_file(__DIR__ . '/../autoload.php')) { require_once __DIR__ . '/../autoload.php'; } if (is_file(__DIR__ . '/.原创 2020-12-30 22:06:24 · 2468 阅读 · 3 评论 -
ThinkPHP5访问去除/public/index.php
原访问链接:http://localhost/public/index.php/admin/index/index设置后访问链接:http://localhost/admin/index/index一、复制public目录下的index.php到根目录修改内容为:<?php// 定义应用目录define('APP_PATH', __DIR__ . './application/...原创 2019-04-15 21:54:35 · 5626 阅读 · 1 评论 -
PhpStorm 配置debug断点调试
以下方法可以不用下载Xdebug helper浏览器扩展插件。环境phpstudy_pro 小皮集成环境Apache 2.4.39php 7.4.3ntsxdebug 2.9.6 php_xdebug-2.9.6-7.4-vc15-nts-x86_64.dllphpStorm 2020.1.3相关下载phpstudy集成环境下载xdebug下载(将phpinfo源代码贴入生成适合当前的版本)PhpStorm下载配置文件php.ini 配置文件新增 xdebug 配置,配.原创 2020-07-16 23:28:34 · 2395 阅读 · 0 评论 -
thinkphp5 定时任务
前段时间在研究thinkphp5.0版本做自动任务的时候,碰到了棘手的问题–如何做自动化任务,因为程序开始就需要一直执行,查了很多资料,都说靠php原生的死循环来做不靠谱,时间误差也没法保证,所以后面采用thinkphp5的command工具和服务器的定时任务来做:1.新建command文件在application/模块/新建一个command文件夹/Test.class.php<...原创 2018-03-06 14:26:56 · 9936 阅读 · 6 评论 -
PhpSpreadsheet 电子表格(excel) PHP处理笔记
1 安装composer require phpoffice/phpspreadsheetGithub地址:PHPOffice/PhpSpreadsheet文档地址:PhpSpreadsheet’s documentation2 基本用法// 这里是以thinkphp5环境为例use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffic...原创 2020-03-18 23:14:37 · 1509 阅读 · 1 评论 -
thinkphp js带参数跳转页面
var pid = '12';var id = '1';location.href = '{:url("index/exam/index")}?pid='+pid+'&id='+id;原创 2017-04-02 17:14:22 · 3963 阅读 · 1 评论