ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
author:咔咔wechat:fangkangfk在base控制器中添加这个即可header('Access-Control-Allow-Origin:*');// 响应类型header('Access-Control-Allow-Methods:*');// 响应头设置header('Access-Control-Allow-Headers:x-requested-...
author:咔咔wechat:fangkangfk$list为需要截取的数组0为从什么位置开始截取2位截取几条数据array_splice($list,0,2);
author:咔咔wechat:fangkangfktp3.1使用内置import()也可使用原生的导入tp3.2使用的内置import()或者vender()也可使用原生的导入tp5.0:Loader::import('Hprose.HproseHttpClient');tp5.1:由于内部导入类需要命名空间,使用的bind()或者app(),但是没有命名空间的呢所以使...
author:咔咔wechat:fankkangfk这是改过的条件表达式之前的是这个样子的,这就是之前查不到数据的写法
文件分布示意创建钩子文件data/behavior/AopTest.php<?phpnamespace databehavior;class AopTest{ //绑定api初始化 public function apiInit($params){ echo 'api初始化开始'; } //绑定api结束 publ...
案例:将时间过期的状态码给为3解析上边案例这条语句是在tp5特别常用的语句data=D(′goodscoupon′)−>where(′id′,data = D('goodscoupon')->where('id',data=D(′goodscoupon′)−>where(′id′,v...
1.定义上传路径2.把public给替换掉,因为域名的地址直接定义到了public下3.前端的显示问题把这里直接给改掉,不用他之前的,因为现在的框架版本是5.1...
这是一份源码<?phpnamespace appdatautil;use thinkhelperStr;class UploadUtil{ /** * @var 文件信息thinkfile这个类 */ private $file; /** * @var 上传图片的目录 */ private $p...
在本地一切都ok上线就问题来了解决这个问题很是简单那就是在验证码方法里边加上ob_clean()这个方法即可
1. 打印的结果是2. 获取图片的信息使用getInfo()这个方法即可
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...
author:咔咔wechat:fangkangfk个人网站:fangkang.top// 获取今天的博客Db::name('blog') ->whereTime('create_time', 'd') ->select(); // 获取本周的博客Db::name('blog') ->whereTime('create_time', '...
下载ueditor这个直接在git上拉取,网站下载速度太慢https://github.com/fex-team/ueditor安装依赖npm install 安装依赖(如果没有安装 grunt , 请先在全局安装 grunt)在终端执行 grunt default会在目录生成一个dist使用这个就可以TP5.1配置把刚刚生成的dist/utf-8下的所有内容都放在pub...
实现代码$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...
框架一直在更新,项目实现也需要跟着一起前进!前言俩年前用TP5.0搭了一个后台,一直沿用至今。不是不想换,就因为一个字“懒”。这次荣幸咔咔需要写一个新项目,但还是一成不变的用之前搭好的框架,写着写着就停了下来。在之前写的项目经过验证的东西,完全可以在优化的。无论是从结构上还是效率上都在慢慢的减退,新的东西出来肯定是为执行效率,代码风格,框架结构,新的功能。不要较劲说是为了开发效率就这样了,一直一成不变,打破安逸,坚持前行。咔咔整理了一个路线图,准备按照这样的路线图进行编写文章,后期发现没有.
本文将会对spl_autoload_register这个方法进行解析。前言咔咔整理了一个路线图,着手打造一份面试宝典,准备按照这样的路线图进行编写文章,后期发现没有补充到的知识点在进行添加。也期待各位伙伴一起来帮助补充一下。评论区见哦!一、认识并使用spl_autoload_register...
想了很久终于要开始系列文章的编写了,期望是写出提升和面试都可以搞定的系列文章。当你看到本文时,如果你发现咔咔没有编写到的面试热点问题或者技术难点,期待评论区指出,一起完善。前言目前整理的路线图,如有好的建议咔咔会第一时间进行收录。此导图还没有完成,有的模块需要收集资料,会在更新文章的同时进行更新导图。一、自动加载loader源码分析...
本文主要针对框架内部容器以及门面的实现做为基准点来实现,前言在这之前已经剖析过了类的自动加载、配置文件加载的源码解析,本文为第三期的文章,主要针对容器以及门面类的实现,解析源码。以及学习实现此功能的一些知识点。第一期文章:ThinkPHP自动加载Loader源码分析第二期文章:ThinkPHP配置文件源码分析一、单例模式在学习容器以及门面之前需要必须了解的俩个设计模式,单例模式、注册树模式。先对单例模式做一个简单的说明。拥有一个构造函数,并且属性为private拥有一个静态成员变.
本文主要描述了门面的使用和实现过程以及源码的深度解析。框架门面解析前言一、简单认识一下在框架中的门面的好处二、学习框架中facade的使用三、优化在框架中facade的使用四、门面类源码解析五、static关键字六、总结前言使用框架的伙伴应该都知道在5.1时框架新增了一个特性那就是本文将编写的门面,也就是facade这个特性。使用过这个特性的都明白其中的好处,那就是方法调用可以直接静态进行调用,不用再使用关键字static来定义。接下来咔咔将会从以下几个方面带着大家探索属于门面的故事。一、简.
本文主要介绍框架的执行流程前言如果不清楚框架是怎么执行的,那么看在多的代码都是只是认识代码而已,阅读源码是为了学习其框架的设计思想和代码模式。而执行流程则是将我们学习的东西串联在一起,从而更好地理解。咔咔也会给大家把执行流程用思维导图的方式画出来。只要大家在本文学习到一点点的知识点,咔咔也是心满意足的。一、框架执行流程...
路由是项目开发中比较重要的一个环节,每个项目都会使用路由进行管理接口,接下来本文会从源码方面带大家一起学习路由。框架路由解析前言一、路由初识化简单分析二、路由定义前言使用框架写过项目的肯定都使用过路由,使用路由来进行接口的管理,那么为什么要使用路由呢!使用路由会保护项目的真实请求路径。使请求地址更加规范和简洁,在开发过程中方法名有时候会很长,就可以直接使用路由进行简洁处理。可以统一对请求请求进行拦截并且进行权限检查的操作。并且在5.1版本支持了注解路由,方便在开发的过程中进行调试。方便直.
路由是项目开发中比较重要的一个环节,每个项目都会使用路由进行管理接口,接下来本文会从源码方面带大家一起学习路由。框架路由解析前言一、路由参数和变量规则前言由于文章篇幅的原因,执行在新开一篇文章进行写。在上一篇中给大家讲解了以下内容。路由初识化简单分析通过定义路由再谈门面路由定义rule方法中的$this->group到底执行了什么路由规则预处理解析生成路由标识的快捷访问但是在路由这块还有很多的内容要来讲解,接下来就会针对以下内容进行解析。路由参数变量规则资源路由路.