解析使用ThinkPHP应该掌握的调试手段


Posted in PHP onJune 20, 2013

使用ThinkPHP应该掌握的调试手段
经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉ThinkPHP内置的调试手段和方法,抛开IDE本身自带的调试方式不说,如果你正在用或者打算用ThinkPHP开发的话,那么下面一些和调试相关的方法你是应该要了解和掌握的:
1、在项目配置文件里面打开调试模式DEBUG_MODE,这样能够让你发现大部分的错误原因 。可能影响验证码的输出。

2、如果不想使用调试模式,可以单独开启页面Trace显示。发现很多人不想使用调试模式的原因居然是因为有页面Trace信息的输出,其实这里面有一个误区,以为调试模式就一定会有页面Trace,但其实调试模式和页面Trace没有必然的关系,只是因为打开调试模式后,系统默认的调试配置文件会开启页面Trace显示,所以你完全可以给项目单独定义调试配置文件。

3、使用系统定义的dump函数,该方法同var_dump可以输出任何类型的变量信息,而且更加有利于在浏览器里面查看,例如:

$User = D("User");
$list    = $User->findAll();
dump($list);

4、页面Trace信息只能显示当前页面执行的sql语句,但无法查看ajax方式执行的后台操作里面的sql语句,所以你还可以开启sql日志记录SQL_DEBUG_LOG 来记录每一条执行的sql语句,并且可以查看到每条sql语句的执行时间 sql日志文件位于Logs目录下面,会自动按日期来区分每天的sql日志。

5、另外一个是在执行某个数据操作后怀疑sql执行有错误的话,可以使用模型类的getLastSql方法来查看上次执行的sql语句,以便分析具体的错误原因。例如:

$User = D("User");
$User->id = 3;
$User->name = 'ThinkPHp';
$User->save();
echo $User->getLastSql();
// 输出 update think_user set name='ThinkPHP' where id=3;

6、当需要调试某段代码的运行时间的时候,可以使用系统提供的debug_start($label)和debug_end($label)方法,例如:
debug_start('demo');
// 这里是你的代码段.......
debug_end('demo');

 

PHP 相关文章推荐
一段防盗连的PHP代码
Dec 06 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
php使用MySQL保存session会话的方法
Jun 26 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 #PHP
php Xdebug的安装与使用详解
Jun 20 #PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 #PHP
hadoop中一些常用的命令介绍
Jun 19 #PHP
hadoop常见错误以及处理方法详解
Jun 19 #PHP
php常用Output和ptions/Info函数集介绍
Jun 19 #PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 #PHP
You might like
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
php错误日志简单配置方法
2016/07/11 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
python算法学习之基数排序实例
2013/12/18 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python颜色随机生成器的实例代码
2020/01/10 Python
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
护士实习自我鉴定
2013/10/22 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
思想汇报格式
2014/01/05 职场文书
《匆匆》教学反思
2014/02/22 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
2015年国庆节寄语
2015/08/17 职场文书