解析使用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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
php的header和asp中的redirect比较
Oct 09 PHP
PHP 如何向 MySQL 发送数据
Oct 09 PHP
php 在线打包_支持子目录
Jun 28 PHP
一个很不错的PHP翻页类
Jun 01 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
php 连接mysql连接被重置的解决方法
Feb 15 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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
php抓取https的内容的代码
2010/04/06 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
php正则提取html图片(img)src地址与任意属性的方法
2017/02/08 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
巧用canvas
2017/01/21 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
Vue实现日历小插件
2019/06/26 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
Python 多进程、多线程效率对比
2020/11/19 Python
python自动化办公操作PPT的实现
2021/02/05 Python
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
元宵晚会主持词
2014/03/25 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
护士2014年终工作总结
2014/11/11 职场文书
保证书格式
2015/01/16 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL