设为首页 收藏本站
查看: 675|回复: 0

[经验分享] 给PHP的调试加一个TRACE

[复制链接]
发表于 2017-4-2 11:37:50 | 显示全部楼层 |阅读模式
  用过VC++一类的人,都非常喜欢其中的TRACE。但PHP没有,只有echo,print_r,而这些函数的坏处在于,程序发布时,要记得删除或注解掉它。
  记得SYMFONY可以在专用的DIV中输出调试与出错信息,但出错并不是我想要调试时输出的东西。仍是不够方便。
  其实,自己加一个。也就方便了。可惜的是,这玩艺在任一开发框架中都没有(只有我写的框架中才有)。加一个并不复杂的。
  就是全局函数。但这个全局函数,因为是有条件函数。所以,必须是用嵌套函数定义。比如以下代码:

        $debug = App::getInstance()->config['debug'];
if ($debug===true){
if (!function_exists('trace')){ //specially for ajax debug!!
function trace($var){
$string=print_r($var,true);
require_once(ERHDIR.'../Logger/Logger.class.php');
Logger::getInstance()->logg('INFO',
"/*************************** BEGIN INFO BY TRACE: ***************************\r\n"
.$string
."/***************************  END INFO BY TRACE   ***************************\r\n" );
if(! isset($_SERVER['HTTP_X_REQUESTED_WITH']))
echo($string);
}
}            
}else{
if (!function_exists('trace')){ //specially for ajax debug!!
function trace($var){
$string=print_r($var,true);
require_once(ERHDIR.'../Logger/Logger.class.php');
Logger::getInstance()->logg('INFO',
"/*************************** BEGIN INFO BY TRACE: ***************************\r\n"
.$string
."/***************************  END INFO BY TRACE   ***************************\r\n" );
}
}
}
  上述代码,要嵌入你的应用核心类的某个构造函数或初始化函数中。能够获得应用的调试标志。能够得到日志的输出接口。这样,代码就成了。
  接下来,只要你想调试,你一概不需要用echo, print_r了,你只要用 trace(你要查看的变量);这个语句就可以了。
  好处在何处?因为,你程序中是有可能用到echo的。是否会用到print_r不清楚。
  但你程序发布时,只要修改应用的debug标志,就不会有意外的页面输出了。同时,清理代码也很容易,全站点文件搜索一下trace,或替换trace为//trace就OK了。多方便呀!!!!
  当然,上面代码有些笨拙。你也大可以直接定义全局函数。所有判断完全在trace函数内部实现。       

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359071-1-1.html 上篇帖子: PHP网站中整体防注入方法 下篇帖子: php 两数组交集 差集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表