将php的debug信息与firefox的控制台挂钩

本文介绍了一种在Firefox和Chrome浏览器中利用Firebug控制台分门别类显示PHP警告和错误信息的方法。通过一个简单的PHPDebug类,可以将不同级别的调试信息(如日志、信息、警告和错误)输出到浏览器控制台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天学到一个招,就是如果是在FIREFOX或者chrome下,可以将PHP中的警告,错误等信息,
分门别类输出到firebug的控制台中,这样查看起来会比较好看,比较直观.

先有一个debug类如下:


class PHPDebug {

function __construct() {
    if (!defined("LOG"))    define("LOG",1);
    if (!defined("INFO"))   define("INFO",2);
    if (!defined("WARN"))   define("WARN",3);
    if (!defined("ERROR"))  define("ERROR",4);

    define("NL","\r\n");
    echo '<script type="text/javascript">'.NL;

    /// this is for IE and other browsers w/o console
    echo 'if (!window.console) console = {};';
    echo 'console.log = console.log || function(){};';
    echo 'console.warn = console.warn || function(){};';
    echo 'console.error = console.error || function(){};';
    echo 'console.info = console.info || function(){};';
    echo 'console.debug = console.debug || function(){};';
    echo '</script>';
    /// end of IE
}

function debug($name, $var = null, $type = LOG) {
    echo '<script type="text/javascript">'.NL;
    switch($type) {
        case LOG:
            echo 'console.log("'.$name.'");'.NL;
        break;
        case INFO:
            echo 'console.info("'.$name.'");'.NL;
        break;
        case WARN:
            echo 'console.warn("'.$name.'");'.NL;
        break;
        case ERROR:
            echo 'console.error("'.$name.'");'.NL;
        break;
    }

    if (!empty($var)) {
        if (is_object($var) || is_array($var)) {
            $object = json_encode($var);
            echo 'var object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = \''.str_replace("'","\'",$object).'\';'.NL;
            echo 'var val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = eval("(" + object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' + ")" );'.NL;
            switch($type) {
                case LOG:
                    echo 'console.debug(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
                break;
                case INFO:
                    echo 'console.info(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
                break;
                case WARN:
                    echo 'console.warn(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
                break;
                case ERROR:
                    echo 'console.error(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
                break;
            }
        } else {
            switch($type) {
                case LOG:
                    echo 'console.debug("'.str_replace('"','\\"',$var).'");'.NL;
                break;
                case INFO:
                    echo 'console.info("'.str_replace('"','\\"',$var).'");'.NL;
                break;
                case WARN:
                    echo 'console.warn("'.str_replace('"','\\"',$var).'");'.NL;
                break;
                case ERROR:
                    echo 'console.error("'.str_replace('"','\\"',$var).'");'.NL;
                break;
            }
        }
    }
    echo '</script>'.NL;
}
}


  使用起来也很方便,例子如下:


// include and instantiate the class
    require_once("PHPDebug.php");
    $debug = new PHPDebug();

    // simple message to console
    $debug->debug("A very simple message");

    // vaiable to console
    $x = 3;
    $y = 5;
    $z = $x/$y;
    $debug->debug("Variable Z: ", $z);

    // a warnign
    $debug->debug("A simple Warning", null, WARN);

    // info
    $debug->debug("A simple Info message", null, INFO);

    // An error
    $debug->debug("A simple error messsage", null, ERROR);

    // Array in console
    $fruits = array("banana", "apple", "strawberry", "pineaple");
    $fruits = array_reverse($fruits);
    $debug->debug("Fruits array", $fruits);

    // object to console
    $book               = new stdClass;
    $book->title        = "Harry Potter and the Prisoner of Azkaban";
    $book->author       = "J. K. Rowling";
    $book->publisher    = "Arthur A. Levine Books";
    $book->amazon_link  = "http://www.amazon.com/dp/0439136369/";
    $debug->debug("Object", $book);


  这样,就可以将各种警告或错误,分门别类地显示在浏览器的控制台中了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值