thinkPHP
文章平均质量分 93
咔咔-
死磕MySql系列作者
展开
-
让你少踩坑的fastadmin教程
目录结构前言一、安装二、配置成可以自己使用的后台模板三、添加自己的后台模块前言本文会对fastadmin进行简单安装和配置,配置成自己可以使用的后台模板一、安装下载地址:https://www.fastadmin.net/download.html?ref=docs咔咔这里使用的使用源码安装方式,比较方便。点击上边的下载地址,然后下载源码包,进行解压。然后将解压的文件放置到PHP环境目录中。配置phpstudy虚拟域名。这里一定要注意你的PHP环境。PHP >= 7.1 且 &原创 2021-06-26 20:24:50 · 10063 阅读 · 3 评论 -
ThinkPHP缓存源码深度解析
缓存在项目的运行了一段时间都会使用的一个功能,本文将会对框架中的缓存做一个深度的解析前言在项目中缓存是必不可少的一项功能,当用户量大的时候是必须上缓存的,如何都直接查数据库那么对于用户体验来说就太差了。那么什么情况下应该使用缓存呢!热点事件,例如微博热搜不经常更新的数据,例如配置项博客平台的排行榜单社交平台的关注列表粉丝列表等等以上说的这些应用场景并不说是框架的缓存,一般在使用缓存的层面是不太使用框架的缓存的。常用的为redis,memcache等NoSQL。但是今天主要讨论的是.原创 2021-01-21 10:53:01 · 965 阅读 · 0 评论 -
ThinkPHP数据库查询之Db类深度解析
终于快来到框架解析的结尾了,本文将会带领大家领略框架中的模型以及视图的奥秘。ThinkPHP模型以及视图层深度解析前言一、Db操作类和其它类对应关系解刨前言在日常开发过程中模型的使用是非常之多的,但是在开发过程只知道如何使用,并不知道内在是如何实现的,模型是不管接口还是后台都会使用到的东西。关于视图在前后台分离的大趋势下,框架存在视图大多数还是针对于后台开发的使用。本文也是对框架解读快到最后阶段了,接下来咔咔将带领大家一起学习关于在框架中模型以及视图的奥秘。一、Db操作类和其它类对应关系解刨.原创 2021-01-12 18:06:22 · 4355 阅读 · 0 评论 -
ThinkPHP数据库查询之模型深度解
在上文聊到了数据库查询Db方式,今天来简单的聊一下关于Model类的实现方式。前言Model也就是框架中提到的模型概念,这种使用方式在框架使用中占了绝大部分。接下来咔咔将会在上文的基础上再继续对模型进行深度解析,所以现在准备好小板凳嗑点瓜子来阅读本文吧!上文给大家提供的Db类的执行流程流程图也给大家放出来,可以在熟悉一下。一、简单看一眼模型的一些使用文件在模块的目录下肯定是要存在model目录的然后来到框架的底层可以看到关于模型类的文件,在这个类中使用了俩个之前咱们学习过的知识点。第.原创 2021-01-11 12:00:32 · 757 阅读 · 0 评论 -
老司机竟然在判断返回结果上翻车了(ThinkPHP)
本文属于基础内容,看到的同学检查一下自己的代码有没有出现同样的问题聊一下关于查询判断的那点事前言一、问题重现二、解决问题三、扩展四、总结前言小Q又带着问题来了,今天的问题估计是大多数同志都会犯的问题。问题是在使用ThinkPHP时查询返回的结果判断是否为空。是不是很自信,这有什么不知道的,不就是empty嘛!如果你是这样认为的,那还是把文章简单的看完哈!这个问题的缘由就是对框架查询数据库返回的结果是什么类型不明确,知道了类型就是一个非常简单的问题。一、问题重现数据库很简单就一张表u.原创 2021-01-11 11:59:56 · 756 阅读 · 4 评论 -
ThinkPHP源码解析之控制器
本文会对控制器的执行顺序还有实现过程、源码解析给出解析,ThinkPHP源码解析之控制器前言一、实例化控制器二、关于ArrayAccess和直接执行魔术访问返回实例的区别三、执行控制器中的方法前言在上文中对路由进行了特别的详解,也从应用初始化开始解析一直到路由调度返回给路由检测这一环节。路由检测获取到的值如下图,也就是路由调度最终返回的值。使用的路由规则为Route::get('hello/:name', 'index/index/:name');从上图可以看出重要数据都是在dispat.原创 2021-01-08 10:35:01 · 1442 阅读 · 0 评论 -
MySQL如何同时自增自减多个字段
本文将带大家聊一下如何同时自增自减多个字段前言最近小Q同学去面试了,然后就问了题目的问题,如何同时自增自减多个字段。小Q一时回答不出来,最终的结果就是回家等通知…关于这个问题咔咔来给小Q简单的进行解答一下。一、ThinkPHP框架实现小Q最熟悉的框架就是ThinkPHP,那么咔咔就先使用ThinkPHP来解决这个问题。首先,解决这个问题需要对框架的inc和setInc有一定的了解,在框架中也就是使用这俩个函数进行自增或者自减的。但是俩者是有区别的,inc是Db类中的方法,setInc实际.原创 2021-01-06 16:48:04 · 2139 阅读 · 0 评论 -
ThinkPHP路由源码解析(三)
本文接着上文继续来解读路由源码,如果你看到本文可以先看一下之前写的路由文章,共计俩篇。ThinkPHP路由源码解析前言一、检测路由-合并分组参数、检查分组路由二、检测URL变量和规则路由是否匹配前言经过前俩篇路由源码的解读,相信大家对路由已经有了一定了了解了。本文会接着ThinkPHP路由源码解析(二)继续讲解,也是路由这块内容的收尾了。关于路由,咔咔感觉是整个框架中源码阅读最吃力的一个核心点,也耗费了很多时间。因为在其中有很多类的嵌套,何不按照常理出牌,例如$this->group的.原创 2020-12-29 11:46:08 · 1016 阅读 · 0 评论 -
ThinkPHP路由源码解析(二)
路由是项目开发中比较重要的一个环节,每个项目都会使用路由进行管理接口,接下来本文会从源码方面带大家一起学习路由。框架路由解析前言一、路由参数和变量规则前言由于文章篇幅的原因,执行在新开一篇文章进行写。在上一篇中给大家讲解了以下内容。路由初识化简单分析通过定义路由再谈门面路由定义rule方法中的$this->group到底执行了什么路由规则预处理解析生成路由标识的快捷访问但是在路由这块还有很多的内容要来讲解,接下来就会针对以下内容进行解析。路由参数变量规则资源路由路.原创 2020-12-29 11:45:40 · 1089 阅读 · 0 评论 -
ThinkPHP路由源码解析(一)
路由是项目开发中比较重要的一个环节,每个项目都会使用路由进行管理接口,接下来本文会从源码方面带大家一起学习路由。框架路由解析前言一、路由初识化简单分析二、路由定义前言使用框架写过项目的肯定都使用过路由,使用路由来进行接口的管理,那么为什么要使用路由呢!使用路由会保护项目的真实请求路径。使请求地址更加规范和简洁,在开发过程中方法名有时候会很长,就可以直接使用路由进行简洁处理。可以统一对请求请求进行拦截并且进行权限检查的操作。并且在5.1版本支持了注解路由,方便在开发的过程中进行调试。方便直.原创 2020-11-12 10:28:44 · 1658 阅读 · 0 评论 -
ThinkPHP源码阅读最佳工具debug_backtrace
本文给大家介绍一个代码调试神器debug_backtrace前言在阅读源码时咔咔一直是借用编辑器进行代码代码追踪,但是有时候回退的时候就有点问题。即使编辑器给提供了代码追踪的回退路线,但是有时候还是会花一点时间去查看。在无意间咔咔发现了一个PHP调试函数debug_backtrace。这个函数可以很清晰的看到代码的执行路线(前提是在对代码进一定程度的改变)。接下来咔咔将对这个函数进行简单的说明和改版,达到属于自己的开发利器。一、debug_backtrace 使用说明下图是咔咔在调试检测.原创 2020-11-12 10:16:09 · 833 阅读 · 0 评论 -
ThinkPHP框架执行流程源码解析
本文主要介绍框架的执行流程前言如果不清楚框架是怎么执行的,那么看在多的代码都是只是认识代码而已,阅读源码是为了学习其框架的设计思想和代码模式。而执行流程则是将我们学习的东西串联在一起,从而更好地理解。咔咔也会给大家把执行流程用思维导图的方式画出来。只要大家在本文学习到一点点的知识点,咔咔也是心满意足的。一、框架执行流程...原创 2020-11-09 10:14:43 · 1169 阅读 · 0 评论 -
ThinkPHP门面源码解析
本文主要描述了门面的使用和实现过程以及源码的深度解析。框架门面解析前言一、简单认识一下在框架中的门面的好处二、学习框架中facade的使用三、优化在框架中facade的使用四、门面类源码解析五、static关键字六、总结前言使用框架的伙伴应该都知道在5.1时框架新增了一个特性那就是本文将编写的门面,也就是facade这个特性。使用过这个特性的都明白其中的好处,那就是方法调用可以直接静态进行调用,不用再使用关键字static来定义。接下来咔咔将会从以下几个方面带着大家探索属于门面的故事。一、简.原创 2020-11-09 09:59:23 · 1050 阅读 · 2 评论 -
ThinkPHP容器源码深度解析
本文主要针对框架内部容器以及门面的实现做为基准点来实现,前言在这之前已经剖析过了类的自动加载、配置文件加载的源码解析,本文为第三期的文章,主要针对容器以及门面类的实现,解析源码。以及学习实现此功能的一些知识点。第一期文章:ThinkPHP自动加载Loader源码分析第二期文章:ThinkPHP配置文件源码分析一、单例模式在学习容器以及门面之前需要必须了解的俩个设计模式,单例模式、注册树模式。先对单例模式做一个简单的说明。拥有一个构造函数,并且属性为private拥有一个静态成员变.原创 2020-10-15 16:23:36 · 1837 阅读 · 0 评论 -
ThinkPHP你必须要掌握的配置加载
在上期聊了ThinkPHP类的自动加载,如你还不太了解可以跟这下文链接去进行查看。本文会带你一起解读ThinkPHP配置文件。前言想了很久终于要开始系列文章的编写了,期望是写出提升和面试都可以搞定的系列文章。当你看到本文时,如果你发现咔咔没有编写到的面试热点问题或者技术难点,期待评论区指出,一起完善。第一期文章:ThinkPHP自动加载Loader源码分析一、配置文件的种类在ThinkPHP中有四类配置文件,你知道多少呢!不知道也没关系咔咔带你在看一次。这四种配置文件分别为惯例配置、应.原创 2020-09-22 15:08:12 · 1170 阅读 · 0 评论 -
ThinkPHP自动加载Loader源码分析
想了很久终于要开始系列文章的编写了,期望是写出提升和面试都可以搞定的系列文章。当你看到本文时,如果你发现咔咔没有编写到的面试热点问题或者技术难点,期待评论区指出,一起完善。前言目前整理的路线图,如有好的建议咔咔会第一时间进行收录。此导图还没有完成,有的模块需要收集资料,会在更新文章的同时进行更新导图。一、自动加载loader源码分析...原创 2020-09-16 10:45:13 · 1291 阅读 · 3 评论 -
来聊聊,spl_autoload_register的前世今生
本文将会对spl_autoload_register这个方法进行解析。前言咔咔整理了一个路线图,着手打造一份面试宝典,准备按照这样的路线图进行编写文章,后期发现没有补充到的知识点在进行添加。也期待各位伙伴一起来帮助补充一下。评论区见哦!一、认识并使用spl_autoload_register...原创 2020-09-02 09:45:13 · 720 阅读 · 0 评论 -
真香,门面使用起来这么简单!
框架一直在更新,项目实现也需要跟着一起前进!前言俩年前用TP5.0搭了一个后台,一直沿用至今。不是不想换,就因为一个字“懒”。这次荣幸咔咔需要写一个新项目,但还是一成不变的用之前搭好的框架,写着写着就停了下来。在之前写的项目经过验证的东西,完全可以在优化的。无论是从结构上还是效率上都在慢慢的减退,新的东西出来肯定是为执行效率,代码风格,框架结构,新的功能。不要较劲说是为了开发效率就这样了,一直一成不变,打破安逸,坚持前行。咔咔整理了一个路线图,准备按照这样的路线图进行编写文章,后期发现没有.原创 2020-08-28 10:19:33 · 664 阅读 · 0 评论 -
ThinkPHP多语言如何实现你了解过吗?
最近项目比较忙,就没有怎么写文章。本文主要内容为多语言的后台是如何实现的。实现多语言后台前言后台实现多语言前言公司需要写一个多语言后台,以前也没做过,于是到面向百度了一下。这是用了TP框架俩年了,第一次发现框架是自带的多语言切换功能。这里着实给点一个赞。接下来我们来实现一下这个功能。后台实现多语言使用框架为v5.1.38 LTS来到配置文件config/app.php修改配置lang_switch_on为true...原创 2020-08-10 14:25:01 · 2044 阅读 · 0 评论 -
【ThinkPHP】like同一个字段多个条件查询
这篇文章主要对TP5.0的like查询 有可能本文章的案例 你在以后会遇的到实现功能:同一个字段多个查询条件like同一个字段多个条件查询案例还原发现问题解决问题然后最终实现源码博主联系方式欢迎交流案例还原先看数据,我们需要使用2017,欧美,动作 这样的条件进行查询然后我们可以看到查询结果那我们的查询方式也很简单$where['category'] = ['lik...原创 2020-04-23 00:21:49 · 3359 阅读 · 0 评论 -
【Mysql】在tp5里边使用原生sql根据格式化时间获取数据
这篇文章只是记录一个小小的知识点,会抽时间把mysql根据时间查询的大多数情况都会一一列举出来根据时间获取数据需求代码博主微信欢迎交流需求根据时间获取数据前端传过来的数据是格式化好的时间(2020-3-31)数据库存储是时间戳根据前端传过来的数据进行查询数据代码 $param = $this->request->param(); i...原创 2020-03-31 21:20:10 · 888 阅读 · 0 评论 -
【TP5.1】根据天进行分组查询
实现代码$userCostRecord = $this->costRecordModel->field('sum(`cr_cost_money`) as cr_cost_money,cr_time')->order('cr_time desc')->group("DATE_FORMAT(FROM_UNIXTIME(cr_time),'%Y-%m-%d')")->s...原创 2020-02-08 18:34:48 · 2843 阅读 · 0 评论 -
【TP5.1】引入百度ueditor富文本编辑器
下载ueditor这个直接在git上拉取,网站下载速度太慢https://github.com/fex-team/ueditor安装依赖npm install 安装依赖(如果没有安装 grunt , 请先在全局安装 grunt)在终端执行 grunt default会在目录生成一个dist使用这个就可以TP5.1配置把刚刚生成的dist/utf-8下的所有内容都放在pub...原创 2020-01-05 15:48:53 · 1161 阅读 · 0 评论 -
【TP5.1】查询在数组内的所有数据,并且根据用户id分组,计算消费金额总和大于100的数量
author:咔咔wechat:fangkangfk个人网站:fangkang.top原创 2019-12-27 17:35:13 · 2237 阅读 · 1 评论 -
【TP5.1】数据包含在一位数组内内并且计算某一列的总和
author:咔咔wechat:fangkangfk个人网站:fangkang.top需求:SQL条件:数据包含在一位数组内内并且计算某一列的总和原创 2019-12-27 16:20:30 · 887 阅读 · 0 评论 -
【TP5.1】根据时间条件的查询
author:咔咔wechat:fangkangfk个人网站:fangkang.top// 获取今天的博客Db::name('blog') ->whereTime('create_time', 'd') ->select(); // 获取本周的博客Db::name('blog') ->whereTime('create_time', '...原创 2019-12-23 15:37:19 · 1525 阅读 · 0 评论 -
【TP5.1】对接七牛云上传图片
1. 安装七牛云的sdk php composer.phar require qiniu/php-sdk如果安装出现下面问题Could not open input file: composer.phar点击看这篇文章:Could not open input file: composer.phar2. 新建upload控制器账号秘钥在个人中心找3. 源码<?p...原创 2019-12-10 12:43:30 · 1219 阅读 · 0 评论 -
【ThinkPHP】如何获取think\file的内容
1. 打印的结果是2. 获取图片的信息使用getInfo()这个方法即可原创 2019-12-10 12:35:55 · 2244 阅读 · 0 评论 -
【TP5.1】模糊搜索的调整
1 TP5.0模糊搜索2 TP5.1模糊搜索3 变化从上边的两个文档就可以很明显的发现,5.1不在支持数组的查询方式4 TP5.1新增的搜索功能--搜索器使用是需要在模型里边使用的,使用Db方式是不可以的...原创 2019-12-03 15:34:33 · 611 阅读 · 0 评论 -
【TP5.1】验证码在线上不显示问题
在本地一切都ok上线就问题来了解决这个问题很是简单那就是在验证码方法里边加上ob_clean()这个方法即可原创 2019-11-28 15:54:06 · 903 阅读 · 0 评论 -
【PHP】项目在Linux上的图片上传
这是一份源码<?phpnamespace app\data\util;use think\helper\Str;class UploadUtil{ /** * @var 文件信息think\file这个类 */ private $file; /** * @var 上传图片的目录 */ private $p...原创 2019-11-08 16:07:43 · 784 阅读 · 0 评论 -
【ThinkPHP5.1】使用layui的图片上传显示问题
1.定义上传路径2.把public给替换掉,因为域名的地址直接定义到了public下3.前端的显示问题把这里直接给改掉,不用他之前的,因为现在的框架版本是5.1...原创 2019-11-06 18:52:20 · 898 阅读 · 0 评论 -
【TP5.1】视图输出字符串内容替换
5.0版本是直接在config中的view_replace_str这里直接写5.1版本在升级文档里边说了废弃了view_replace_str而是改到了config\template.php这里原创 2019-11-05 14:37:45 · 1965 阅读 · 0 评论 -
【ThinkPhp3.2】关于update指定了条件,但是进行了全表更新
案例:将时间过期的状态码给为3解析上边案例这条语句是在tp5特别常用的语句data=D(′goodscoupon′)−>where(′id′,data = D('goodscoupon')->where('id',data=D(′goodscoupon′)−>where(′id′,v...原创 2019-08-26 19:34:04 · 1761 阅读 · 0 评论 -
【TP5.1】钩子的使用
文件分布示意创建钩子文件data/behavior/AopTest.php<?phpnamespace data\behavior;class AopTest{ //绑定api初始化 public function apiInit($params){ echo 'api初始化开始'; } //绑定api结束 publ...原创 2019-07-19 00:12:07 · 1927 阅读 · 0 评论 -
【TP5.1】使用比较运算符查不出数据
author:咔咔wechat:fankkangfk这是改过的条件表达式之前的是这个样子的,这就是之前查不到数据的写法原创 2019-05-29 16:04:51 · 704 阅读 · 0 评论 -
【TP5.1】关于使用时间条件查询
author:咔咔wechat:fangkangfk在之前使用tp5进行时间查询的时候,使用的条件一直都是where['time'] = ['>',time()];但是在tp5.1使用这个就查询不出来数据了,所以在tp5.1进行查询时需要使用$res = $this->userExchangeModel->where($where1)->w...原创 2019-04-28 10:48:18 · 1722 阅读 · 0 评论 -
【ThinkPHP5.1】如何引用extend的类库
author:咔咔wechat:fangkangfktp3.1使用内置import()也可使用原生的导入tp3.2使用的内置import()或者vender()也可使用原生的导入tp5.0:Loader::import('Hprose.HproseHttpClient');tp5.1:由于内部导入类需要命名空间,使用的bind()或者app(),但是没有命名空间的呢所以使...原创 2019-04-15 15:15:48 · 13370 阅读 · 0 评论 -
【thinkPHP】移除数组的前俩个元素
author:咔咔wechat:fangkangfk$list为需要截取的数组0为从什么位置开始截取2位截取几条数据array_splice($list,0,2);原创 2019-04-12 16:24:33 · 1883 阅读 · 0 评论 -
【TP5】前后端分离的跨域请求
author:咔咔wechat:fangkangfk在base控制器中添加这个即可header('Access-Control-Allow-Origin:*');// 响应类型header('Access-Control-Allow-Methods:*');// 响应头设置header('Access-Control-Allow-Headers:x-requested-...原创 2019-04-11 10:00:02 · 1357 阅读 · 0 评论