PHP不影响正常运行的调试技巧

以前习惯用 echo,print_r 等方法来测试php输出,这样多多少少会影响到代码的正常运行,现改成把测试变量输出到文本的形式,可实现日志形式的调试,如接口服务端调试。代码如下:

Java代码   收藏代码
  1. <?php  
  2. /** 
  3.  * 写文件函数 
  4.  * @param string $filename 文件名 
  5.  * @param string $writetext 要写入的文本字符串 
  6.  * @param string $openmod 文本写入模式('w':覆盖重写,'a':文本追加) 
  7.  * @return boolean 
  8.  */  
  9. function new_writefile($filename, $writetext, $openmod = 'w') {  
  10.     if (@$fp = fopen($filename, $openmod)) {  
  11.         flock($fp, 2);  
  12.         fwrite($fp, $writetext);  
  13.         fclose($fp);  
  14.         return true;  
  15.     } else {  
  16.         return false;  
  17.     }  
  18. }  
  19.   
  20. /** 
  21.  * 将“数组”转换成“数组字符串”(方便写入文本) 
  22.  * @param array $array 要转换的数组 
  23.  * @param int $level 转换级别/深度 
  24.  */  
  25. function new_arr2str($array, $level = 0) {  
  26.     $space = '';  
  27.     for ($i = 0; $i <= $level; $i++) {  
  28.         $space .= "\t";  
  29.     }  
  30.     $evaluate = "Array\n$space(\n";  
  31.     $comma = $space;  
  32.     foreach ($array as $key => $val) {  
  33.         $key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;  
  34.         $val = !is_array($val) && (!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12 || substr($val, 01)=='0') ? '\''.addcslashes($val, '\'\\').'\'' : $val;  
  35.         if (is_array($val)) {  
  36.             $evaluate .= "$comma$key => " . new_arr2str($val, $level + 1);  
  37.         } else {  
  38.             $evaluate .= "$comma$key => $val";  
  39.         }  
  40.         $comma = ",\n$space";  
  41.     }  
  42.     $evaluate .= "\n$space)";  
  43.   
  44.     return $evaluate;  
  45. }  
  46.   
  47. /** 
  48.  * 写数组(其实用下面的“write函数”就足够用啦~~~) 
  49.  * @param array $array 要写入的数组 
  50.  * @param string $type 文本写入类型('w':覆盖重写,'a':文本追加) 
  51.  */  
  52. function writeArr($array, $type = 'w') {  
  53.     $filename = 'd:\php\wamp\www\write.txt';  
  54.     $writetext = test_arr2str($array);  
  55.     new_writefile($filename, $writetext, $type);  
  56. }  
  57.   
  58. /** 
  59.  * 写对象(包括 数字、字符串、数组) 
  60.  * @param string $writetext 要写入的文本字符串 
  61.  * @param string $type 文本写入类型('w':覆盖重写,'a':文本追加) 
  62.  */  
  63. function write($writetext, $type = 'a'){ // 'w':覆盖重写,'a':表示'文本追加'  
  64.     $filename = 'd:\php\wamp\www\write.txt';  
  65.     $writetext = "++++++++++++++++++++++++++++++++++++++++++\r\n" . print_r($writetext, true) . "\r\n";  
  66.     new_writefile($filename, $writetext, $type);  
  67. }  
  68.   
  69. //require_once('d:\php\wamp\www\write.php'); // add by wenjb(注意:本地测试用,不用提交到 svn)  

 应用如下:

Java代码   收藏代码
  1. $arr = array(  
  2.     "w" => "wen",  
  3.     "j" => "jian",  
  4.     "b" => "bao"  
  5. );  
  6. write($arr);  

 输出结果如下:

Java代码   收藏代码
  1. ++++++++++++++++++++++++++++++++++++++++++  
  2. Array  
  3. (  
  4.     [w] => wen  
  5.     [j] => jian  
  6.     [b] => bao  
  7. )  

 上面的仅仅是小技巧而已,最好还是用专业的调试工具去调试比较好。。。也可以

Java代码   收藏代码
  1. $data222 = $arr;  
  2.   
  3. $text222 = print_r($data222, true);  
  4. $filename222 = 'd:\My Documents\1\write.txt';  
  5. file_put_contents($filename222, $text222);  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值