在针对ecshop或ectouch的二次开发中开启调试模式可以大大增加开发效率,开启方法如下:
1、ectouch中开启调试模式
在\mobile\include\Convention.php中找到'DEBUG'=> false,修改为'DEBUG'=> true,。这步完成只是能够显示页面错误信息,若需要禁用缓存,则需要在\mobile\include\EcTouch.php中 添加defined('DEBUG_MODE') or define('DEBUG_MODE',2);
禁用缓存
写入错误日志(\mobile\data\log.txt)
写入SQL查询日志
2、ecshop中开启调试模式
在/data/config.php添加代码define('DEBUG_MODE',7);,参数如下:
禁用
在页面中显示所有错误
禁用Smarty模板缓存
使用lib.debug.php类
写入SQL查询日志
如上参数为7时, 7=4+2+1,即在页面中显示所有错误、禁用缓存及使用debug类。
在使用debug类是可能遇到Deprecated:Assigning the return value of new by reference is deprecated in D:\**\**\includes\lib.debug.php on line 303错误,即按照提示在\includes\lib.debug.php文件中303行找到代码:
$pa = &new Print_a_class;
去掉&,改为如下代码即可:
$pa = new Print_a_class;
原因是 php5.3以后废除了=&,直接使用=赋值(默认为引用赋值)。
在ecshop中我们要调试的时候经常使用
var_dump($val);
die();
来输出查看变量。但是当变量过多的时候,就会显示不全,这时候我们会考虑使用print_r
print_r($val);
die();
但是,这样输出的内容不是很工整,因此我们想要格式化一下它,所以修改为:
echo "<pre>";
print_r($val);
echo "</pre>";
die();
这样子,我们就可以很好的查看各个变量了,但是我们不想每次都写得这么麻烦,因此我们可以封装自己的打印变量函数dump_die()
function dump_die($val)
{
echo "<pre>";
print_r($val);
echo "</pre>";
die();
}
以后当我们要查看变量的时候就可以使用这个函数来查看了,现在的问题是这个函数放在哪 里,难道我们每次都在摇调试的文件里面写入这个函数,还是每次调试的时候都引入写这个函数的文件,其实,ecshop里面有个写全局函数的位置,那就是 includes/init.php 这个文件,它是ecshop初始化的文件,我们把函数放到这里面,就可以直接在任何地方调用我们自己的打印函数了。