ThinkPHP

ThinkPHP 框架执行流程浅析

一曲冷凌霜 提交于 2019-12-06 16:40:16
版本:v5.1.x LTS v6.0 稳定版已经发布,详见官网: ThinkPHP 6.0 这里以单入口为例解析 ThinkPHP 从接收前端请求到返回数据的整个执行流程,分为如下图的几个步骤: 其中入口文件位置: public/index.php 1. 加载 base.php 2. 执行 App 的 run() 方法 3. 执行 Response 的 send() 方法 4. 调用 Error 类 说明:在加载 base.php 时,通过 Error::register() 注册了异常处理,所以在应用执行最后会调用 Error 类中相应的处理方法。 详见如下三个函数的文档: set_error_handler() set_exception_handler() register_shutdown_function() 来源: oschina 链接: https://my.oschina.net/u/2276973/blog/3126591

ThinkPHP5 API 多版本控制开发

拈花ヽ惹草 提交于 2019-12-06 11:58:22
ThinkPHP5 API 多版本控制开发 开发准备 对于接口开发,建议采用单独的项目部署,与后台项目分离开来,原因如下: 1. 接口多用于查询数据,对于数据提交的较少 2. 接口的权限多采用token模式,后台多采用RBAC控制访问 3. 对于需要高度安全的接口,需要进行加密处理。 首先建立新的项目,配置二级域名 api.xjwblog.com 。对于 APP 客户端开发,往往需要多版本的兼容,因此在服务端需要对接口进行兼容处理。 利用 ThinkPHP5 的多级控制器实现版本的控制 ThinkPHP5 多级控制器说明 以下我们以首页 banner 图为例: 在 route.php 中加入以下代码: 1 Route::get( '/:version/banner' , 'api/:version.Home/banner' ); 建立 api 模块,创建 controller 控制器层和 interfaces 接口约束层(对要实现的基本接口进行约束)以及 Home 文件, 结构如下: interfaces/Home.php 中代码如下: controller/Base.php 中代码如下: controller/Home.php 中代码如下: controller/v1/Home.php 中代码如下: controller/v2/Home.php 中代码如下: 说明:

一文解读伊对相亲交友app源码功能特色、应用场景

可紊 提交于 2019-12-06 05:07:36
红娘相亲同城交友源码 。 一套完整独立的 同城相亲交友 app 是包含 Android、iOS 双端的 手机相亲交友 平台 ,是融合了语音聊天、视频直播、 一对一视频 ,一对多直播(可设置收费房间),一键约聊、自动匹配、预约功能及短视频拍摄上传系统 、多人聊天源码 cps营销裂变体系等功能,按分钟计时收费聊天方式,支持房间礼物打赏,付费动态及付费小视频查看功能,为平台运营方和主播提供更多的盈利变现方式。 仿伊对 同城相亲 交友 app 开发软件特色及应用场景 1、 同城相亲交友 app 开 发特色 : 视频找对象,红娘在线视频牵线、语音交友,群聊互嗨,恋爱乐翻天、 社区 动态,同城活动,相亲动态全知晓、兴趣群组,缘分相聚,群聊、天生伊对,在线视频相亲。 2、 同城相 亲交友 app 软件应用场景: 陌生人社交、语音聊天交友、游戏陪玩社交 3、同城相亲交友app应用案例: 伊对、牵伴、同城陌约、玩洽、同城热恋、约会吧、红娘视频相亲一对缘。( 程序源码开源,支持二次开发,根据不同应用场景需求,定制个性化解决方案 ) 仿伊对同城交友系统开发软件系统开发语言 1、后台PHP语言 2、Android是Java语言(安卓的开发工具脚本: Android Studio )、IOS是 objective-c.(ios开发脚本工具:xcode) 3、框架是thinkphp5.0版本 php用的5

给thinkphp案例blog的标签添加个删除方法

雨燕双飞 提交于 2019-12-05 23:08:15
thinkphp3.1框架中的案例blog,添加日记的同时可以添加标签tag,但仅此而已。当删除日记时,标签并没有被删除掉,从而造成 think_tagged表和think_tag累积了垃圾数据。为了实现删除日记的同时也一起清理掉think_tagged表和think_tag那些过时的数据, 我写了一个函数,在看下面函数时,要先弄清think_tagged表、think_tag和think_blog表的关联关系。 函数如下: public function deltag($recordId){ $condition['recordId'] = $recordId;//获取日记的ID $tagged=M('Tagged'); $taggedlist= $tagged->where($condition)->select();//这里用select而不用find,因为一篇日记可能有多个标签 $taggedids=array();//声明一个数组,用来装think_tagged表的ID $tagIds=array();//声明一个数组,用来装think_tag表的ID foreach ($taggedlist as $key => $value) { $tagIds[]=$value['tagId'];//获取think_tag表的ID $taggedids[]=$value['id']

thinkphp文件处理类Dir.class.php的应用

微笑、不失礼 提交于 2019-12-05 23:07:56
在我的WBlog中,有个清除缓存工能,所谓清除缓存就是删除程序运行时生成的缓存文件,这些文件全部都存在项目的Runtime文件夹里面。当 时在做这个清除缓存的程序时使用项目函数库自定义的一个函数来删除缓存文件,只能整个地删除Runtime,太粗糙了,我觉得有必要作一下细分删除。其实 thinkphp扩展类库有个不错的文件处理类Dir.class.php。Dir.class.php类不是每个thinkphp版本都有,如果你所下 载的版本没有,可以从其它版本去找。现在来说一下Dir.class.php的应用。 Dir.class.php是一个文件处理类,用它可以: 1、取得目录下面的文件信息 2、删除目录或文件 由于我要完善WBlog缓存清除功能,这里我只写了上面的第2个功能,至于第1个功能我将做模板文个修改功能时再写。下面是我在清除缓存的控制器定义的一个del()方法: 01 publicfunctiondel(){ 02 $type=trim($_GET['type']); 03 if(empty($type))$this->error('请选择缓存类型!'); 04 05 switch($type) { 06 case1:// 全部清空 07 $path = WEB_PATH.'Runtime'; 08 break; 09 case2:// 文件缓存目录 10 $path =

thinkphp 导出 csv文件格式

冷暖自知 提交于 2019-12-05 13:44:05
// 导出excel public function daochu() { $start_time = strtotime(input('start_time')); $end_time = strtotime(input('end_time')); $clue_model = new ClueModel(); $result = $clue_model -> daochu($start_time, $end_time); $headerList = ['id', '姓名', '电话', '车系', '车型', '省份', '城市', '经销商', '试驾类型', '申请时间']; $fileName = "试驾线索"; $tmp = []; $data = []; //要导出的数据的顺序与表头一致;提前将最后的值准备好(比如:时间戳转为日期等) foreach ($result as $key => $val) { $data[] = [ $val['id'], $val['name'], $val['mobile'], $val['chexi'], $val['chexing'], $val['sheng'], $val['shi'], $val['jingxiaoshang'], $val['shijian_type'], $val['create_time'] ]; }

宝塔linux奇怪的502 Bad Gateway错误及解决

亡梦爱人 提交于 2019-12-05 13:19:14
用宝塔建了一个测试站试试thinkphp6,结果一直显示502 Bad Gateway,开始以为是thinkphp6的配置问题,测试直接放php文件上去,也是这样的错误,看日志,发现有connect() to unix:/tmp/php-cgi-53.sock failed ,估计与当时安装的php5.3版本有关系,百度以下,提到是配置文件问题,马上去网站的nginx配置文件看看,果然有一行 include enable-php-53.conf;找到错误,改为 include enable-php-73.conf;(我的php版本是7.3),马上好了。应该是当时挂一朋友的站,不支持php7.3,装了个php5.3后来又卸载了,造成的。 来源: oschina 链接: https://my.oschina.net/u/3007124/blog/3103701

因为一个字母让我花费了半天的时候

偶尔善良 提交于 2019-12-05 12:09:47
在写ajax与后面thinkphp交互数据时,把data写成了date,一直都获取不在数据,各种方法处理,各部分代码的分析,花了半天的时候,才发现是一个字母的错误,真是要把自己蠢哭来,以此贴记录,希望以后不要出现这样的问题 来源: https://my.oschina.net/u/4249182/blog/3133208

进阶篇:如何为ThinkPHP5编写优质的单元测试?

好久不见. 提交于 2019-12-05 10:06:57
前言 在项目开发中,需要使用到ThinkPHP 5,为了编写单元测试,解决了几个难题,特此纪录分享一下。 难点1:TP5自带的单元测试感觉不好用,如何使用纯粹的原生PHPUnit? 在看云上,有TP5官方关于单元测试的使用说明,链接是:https://www.kancloud.cn/manual/thinkphp5/182511 但上面的说明过于简单,对于实际使用帮助有限。 对于一直钟情于自动化单元测试以及PHPUnit原生单元测试的我,决定对此优化一番,引入并在ThinkPHP 5下使用原生PHPUnit。 第一步:准备工作 在tests目录下,创建一个phpunit目录,然后创建两个文件:测试启动文件bootstrap.php和单元测试的配置文件phpunit.xml。 测试启动文件bootstrap.php,可以参考项目的启动文件,复制过来后调整下,例如这样: <?php // 定义应用目录 define('APP_PATH', __DIR__ . '/../../application/'); define('APP_DEBUG', true); //开启调试模式 define("APP_STATUS", "tests"); //定义为本地环境 define("RUNTIME_PATH", __DIR__ . "/../../runtime/"); //定义缓存目录

Thinkphp3.2 PHPMailer 发送邮件

时光总嘲笑我的痴心妄想 提交于 2019-12-05 07:57:00
Thinkphp3.2 PHPMailer 发送邮件结合 QQ企业邮箱 发送邮件 下载附件PHPMailer解压到ThinkPHP\Library\Vendor 在Common文件夹新建function.php /** * 邮件发送函数 */ function sendMail ( $to , $title , $content ) { Vendor ( 'PHPMailer.PHPMailerAutoload' ); $mail = new PHPMailer (); //实例化 $mail -> IsSMTP (); // 启用SMTP $mail -> Host = C ( 'MAIL_HOST' ); //smtp服务器的名称(这里以QQ邮箱为例) $mail -> SMTPAuth = C ( 'MAIL_SMTPAUTH' ); //启用smtp认证 $mail -> Username = C ( 'MAIL_USERNAME' ); //你的邮箱名 $mail -> Password = C ( 'MAIL_PASSWORD' ) ; //邮箱密码 $mail -> From = C ( 'MAIL_FROM' ); //发件人地址(也就是你的邮箱地址) $mail -> FromName = C ( 'MAIL_FROMNAME' ); //发件人姓名 $mail