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

[经验分享] PHP不影响正常运行的调试技巧

[复制链接]

尚未签到

发表于 2017-4-7 10:11:43 | 显示全部楼层 |阅读模式
  以前习惯用 echo,print_r 等方法来测试php输出,这样多多少少会影响到代码的正常运行,现改成把测试变量输出到文本的形式,可实现日志形式的调试,如接口服务端调试。代码如下:

<?php
/**
* 写文件函数
* @param string $filename 文件名
* @param string $writetext 要写入的文本字符串
* @param string $openmod 文本写入模式('w':覆盖重写,'a':文本追加)
* @return boolean
*/
function new_writefile($filename, $writetext, $openmod = 'w') {
if (@$fp = fopen($filename, $openmod)) {
flock($fp, 2);
fwrite($fp, $writetext);
fclose($fp);
return true;
} else {
return false;
}
}
/**
* 将“数组”转换成“数组字符串”(方便写入文本)
* @param array $array 要转换的数组
* @param int $level 转换级别/深度
*/
function new_arr2str($array, $level = 0) {
$space = '';
for ($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$evaluate = "Array\n$space(\n";
$comma = $space;
foreach ($array as $key => $val) {
$key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
$val = !is_array($val) && (!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12 || substr($val, 0, 1)=='0') ? '\''.addcslashes($val, '\'\\').'\'' : $val;
if (is_array($val)) {
$evaluate .= "$comma$key => " . new_arr2str($val, $level + 1);
} else {
$evaluate .= "$comma$key => $val";
}
$comma = ",\n$space";
}
$evaluate .= "\n$space)";
return $evaluate;
}
/**
* 写数组(其实用下面的“write函数”就足够用啦~~~)
* @param array $array 要写入的数组
* @param string $type 文本写入类型('w':覆盖重写,'a':文本追加)
*/
function writeArr($array, $type = 'w') {
$filename = 'd:\php\wamp\www\write.txt';
$writetext = test_arr2str($array);
new_writefile($filename, $writetext, $type);
}
/**
* 写对象(包括 数字、字符串、数组)
* @param string $writetext 要写入的文本字符串
* @param string $type 文本写入类型('w':覆盖重写,'a':文本追加)
*/
function write($writetext, $type = 'a'){ // 'w':覆盖重写,'a':表示'文本追加'
$filename = 'd:\php\wamp\www\write.txt';
$writetext = "++++++++++++++++++++++++++++++++++++++++++\r\n" . print_r($writetext, true) . "\r\n";
new_writefile($filename, $writetext, $type);
}
//require_once('d:\php\wamp\www\write.php'); // add by wenjb(注意:本地测试用,不用提交到 svn)
  应用如下:

$arr = array(
"w" => "wen",
"j" => "jian",
"b" => "bao"
);
write($arr);
  输出结果如下:

++++++++++++++++++++++++++++++++++++++++++
Array
(
[w] => wen
[j] => jian
=> bao
)
  上面的仅仅是小技巧而已,最好还是用专业的调试工具去调试比较好。。。也可以

$data222 = $arr;
$text222 = print_r($data222, true);
$filename222 = 'd:\My Documents\1\write.txt';
file_put_contents($filename222, $text222);

运维网声明 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-361384-1-1.html 上篇帖子: AS3与PHP通信的五种方法(基于HTTP协议) 下篇帖子: Web开发者必备:21个超实用PHP代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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