にっき

2007/02/23 20:39:57

きつねたんでPHPでばぐ


PHP のでばっぐ情報を FireBug に表示できる方法っていうにうすが流れてて試してみたけど・・・
中見てみたらえら〜を捕まえて Console に投げてるだけ・・・にう?



それなら
<?php
error_reporting(E_ALL);
set_error_handler(array('MyDebugger','errorHandler'));
register_shutdown_function(array('MyDebugger','renderMessage'));
define('MYDEBUGUTILS_ERR_ERROR',1);
define('MYDEBUGUTILS_ERR_WARN' ,2);
define('MYDEBUGUTILS_ERR_INFO' ,3);

class MyDebugger
{
 /**
  *  @var string[]
  *  @private
 **/
 var $_messages = array();

 /**
  *  errorHandler
  *  
  *  @param   int     $errNo
  *  @param   string  $errStr
  *  @param   string  $errFile
  *  @param   int     $errLine
  *  @param   object  $errContext
  *  
  *  @static
 **/
 function errorHandler($errNo,$errStr,$errFile,$errLine,$errContext)
 {
  $errMode = null;
  $errLv   = 0;
  switch($errNo)
  {
   case E_WARNING:
    $errMode = 'PHP Warning';
    $errLv   = MYDEBUGUTILS_ERR_WARN;
    break;
   case E_NOTICE:
    $errMode = 'PHP Notice';
    $errLv   = MYDEBUGUTILS_ERR_INFO;
    break;
   case E_USER_ERROR:
    $errMode  = 'User Fatal';
    $errLv    = MYDEBUGUTILS_ERR_ERROR;
    break;
   case E_USER_WARNING:
    $errMode = 'User Warning';
    $errLv   = MYDEBUGUTILS_ERR_WARN;
    break;
   case E_USER_NOTICE:
    $errMode = 'User Notice';
    $errLv   = MYDEBUGUTILS_ERR_INFO;
    break;
   case E_STRICT:
    $errMode = 'PHP Strict';
    $errLv   = MYDEBUGUTILS_ERR_INFO;
    break;
   case E_RECOVERABLE_ERROR:
    $errMode = 'PHP Error';
    $errLv   = MYDEBUGUTILS_ERR_ERROR;
    break;
   default:
    $errMode = 'Unknown';
    $errLv   = MYDEBUGUTILS_ERR_INFO;
    break;
  }
  $obj =& MyDebugger::getInstance();
  $obj->appendMessage($errMode,$errLv,$errStr,$errFile,$errLine);
 }

 /**
  *  getInstance
  *  
  *  @param   void
  *  
  *  @return  &myDebugger
  *  
  *  @static
 **/
 function &getInstance()
 {
  static $obj;
  if(!is_object($obj))
  {
   $obj = new MyDebugger();
  }
  return $obj;
 }

 /**
  *  appendMessage
  *  
  *  @param   string  $mode
  *  @param   int     $lv
  *  @param   string  $mes
  *  @param   string  $file
  *  @param   int     $line
 **/
 function appendMessage($mode,$lv = MYDEBUGUTILS_ERR_INFO,$mes = '',$file = '',$line = 0)
 {
  $log = 'console.';
  switch($lv)
  {
   case MYDEBUGUTILS_ERR_ERROR:
    $log .= "error";
    break;
   case MYDEBUGUTILS_ERR_WARN:
    $log .= "warn";
    break;
   case MYDEBUGUTILS_ERR_INFO:
   default:
    $log .= "info";
    break;
  }
  $log .= sprintf('("[%s] %s\nin %s L %d");',$mode,$mes,str_replace(array('\\','%%'),array('\\\\','%'),$file),$line);
  $this->_messages[] = $log;
 }

 /**
  *  getMessages
  *  
  *  @param   void
  *  
  *  @return  string
 **/
 function getMessages()
 {
  return '<script type="text/javascript"><!--
if(typeof console == "undefined")
{
 document.write("<ul id=\"debugMessage\">");
 console =
 {
  "info"     : function(str){document.write("<li class=\"info\">" + str + "</li>");},
  "warn"     : function(str){document.write("<li class=\"warn\">" + str + "</li>");},
  "error"    : function(str){document.write("<li class=\"error\">" + str + "</li>");},
  "fallback" : true
 };
}
' . implode("\n",$this->_messages) . '
if(console.fallback)
{
 document.write("</ul>");
}
--></script>';
 }

 /**
  *  renderMessage
  *  
  *  @param   void
  *  
  *  @return  void
  *  
  *  @static
 **/
 function renderMessage()
 {
  $obj =& MyDebugger::getInstance();
  echo $obj->getMessages();
 }
}
?>

こんなかんじにしとくと FireBug っていうか Console が未定義のときは ul 表示できて便利かにう? 〆(・x・。【みかん

なんだかふぁいるぱすに入ってる『\』と『%』は2つに増えてたからかっとして・・・
それでも FireBug のこんそ〜るで見ると『%』はおかしくなっちゃうけどなにか対処法あるのかなぁ?(つx;【みかん

あっ☆
てすと中でも valid がいいってひとは
register_shutdown_function(array('MyDebugger','renderMessage'));

をかっとして,その代わりに body たぐを閉じる前に
MyDebugger::renderMessage();

でも入れといてくださいなです☆ヾ(・x・。【みかん


こめんと

こめんとする?



 
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆
また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん
さぶこんてんつ
前月 2024年 4月 翌月
  1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
       
             
  • あじ あじ
  • ED ED
  • えでん えでん
  • えれふぃ えれふぃ
  • ぐらぶれ ぐらぶれ
  • etc etc
  • にっき にっき

あわせて読みたい

先頭に戻る
めにう 先頭に戻る