收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

以往编写PHP程序在调试时,比较常用的方式是将变量的信息打印到浏览器中,例如如下这些函数:

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
PHP利用浏览器控制台(Console)进行Debug

发布日期:2019-09-30  关键词: PHP

以往编写PHP程序在调试时,比较常用的方式是将变量的信息打印到浏览器中,例如如下这些函数:

print_r($para);
var_dump($para);
echo $para;

但是如果项目已经布署到生产环境,直接打印到页面肯定会对用户有较大影响,而且造成Ajax返回的数据错误等问题。这时可以采取手段就是将调试信息输出到文件的方式,如下是最简单的例子:
error_log(print_r($para));

但是如果记录日志本身已经很多的话,这样来调试终究还是不太方便的。幸亏谷歌浏览器提供了一个控制台,正常情况下按下Win快捷键 Ctrl+Shift+J)即可调出。将调试内容都输出到Console里,就可以解决这个问题了。

当然我们只是需要一个简单的,可用的,不用安装扩展程序的方式来解决这个问题,那么可以这么来做:

function my_shutdown(){
  echo Console_log::fetch_output();
}
class Console_log{
  private static $output = '';
  static function log($data){
    if(is_array($data) || is_object($data)){ $data = json_encode($data);}
    $zlib_oc = ini_get('zlib.output_compression'); // 取得zlib是否自动开启, 也就是php.ini 中的配置为on.
    if(empty($zlib_oc)) { // 假如读到是off, 就执行下一行.
      ob_start('ob_gzhandler');
    }else{
      ob_start();
    }
    if(self::$output === ''){echo "<script>";}
    echo "console.log('{$data}');";
    self::$output .= ob_get_contents();
    ob_end_clean();
  }
  static function fetch_output(){
    if(self::$output !== ''){self::$output .= "</script>";}
    return self::$output;
  }
}

将如上代码保存好,让想要调试的页面包含进去即可。

原理自然也很简单,就是在页面里加入了一段Javascript的脚本,利用console.log() 函数来输出信息到控制台,如果是数组对象就打印JSON字符串,将所有数据都统一到一处输出。如果不注册一个shutdown函数,那么就记得在程序最后加上一句echo Console_log::fetch_output();

比如想记录下HTTP提交的参数,先加入如下行代码:
Console_log::log($_REQUEST);

具体的调试效果显示如下所示:

PHP利用浏览器控制台(Console)进行Debug,PHP,技术杂萃

大家有兴趣可以去试试看。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com