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

今天学到一个招,就是如果是在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、付费专栏及课程。

余额充值