FirePHP
之前介紹過 javascript FireFox Debug 工具 FireBug (Using firebug for firefox 除錯 javascript),今天來介紹 PHP 除錯工具 FirePHP,它可以輸出 PHP 資料到 FireBug console 介面,方便解決 PHP 相關問題,而不會去影響線上網站的畫面,安裝方式非常簡單,請先安裝 FireFox addon for FirePHP,重新啟動 FireFox 這樣就安裝成功了,接下來就是 include FirePHP Library 檔案,就可以正常使用了。另外還會介紹如何安裝到 CodeIgniter PHP Framework

Firebug: https://addons.mozilla.org/en-US/firefox/addon/1843
FirePHP: https://addons.mozilla.org/en-US/firefox/addon/6149

底下先看畫面:

$array = array("a" => "1", "b" => "2");
$firephp->info($array, "info");
$firephp->warn($array, "warn");
$firephp->error($array, "error");

FirePHP

Install FirePHP 安裝

Ref : http://www.firephp.org/HQ/Install.htm
在 Zend Framework 已經有開發完成,可以參考:FirePHP and Zend Framework 1.6
下載檔案:Download FirePHPCore library version 0.3.1

unzip FirePHP (解壓縮)

您會發現 FirePHPCore 底下有四個檔案,其中 fb.php && FirePHP.class.php 給 PHP 5 用的,另外兩個 fb.php4 && FirePHP.class.php4 則是給 PHP 4 專屬,本文只會以 PHP 5 當作範例。

include FirePHP file

新增一個 index.php 檔案,在最上面寫入:

require_once('FirePHPCore/FirePHP.class.php');

Start output buffering

假設您在 php.ini 有設定 output_buffering 為 on,就可以省略此步驟

測試完整檔案

<?
require_once('FirePHPCore/FirePHP.class.php');
ob_start();
$var = array('i'=>10, 'j'=>20);
$firephp = FirePHP::getInstance(true);
$firephp->log($var, 'WARN');
?>

FirePHP 預設是啟動的,如果您要將此關閉,可以使用底下程式碼將其關閉:

/**
   * Enable and disable logging to Firebug
   *
   * @param boolean $Enabled TRUE to enable, FALSE to disable
   * @return void
   */

$firephp->setEnabled(false);

也可以自訂選項:
maxObjectDepth 顯示 object 資料深度
maxArrayDepth 顯示 array 資料深度
useNativeJsonEncode 設定為 false 就是代表使用 FirePHPCore 內建 JSON encoder 來取代 PHP 內建 json_encode()。
includeLineNumbers 顯示檔案名稱以及行號資訊

// Defaults:
$options = array('maxObjectDepth' => 10,
                 'maxArrayDepth' => 20,
                 'useNativeJsonEncode' => true,
                 'includeLineNumbers' => true);

 

Install FirePHP on CodeIgniter

1. move fb.php and FirePHP.class.php into system/application/libraries directory.
2. rename FirePHP.class.php to Firephp.php, and fb.php to Fb.php.
3. edit Firephp.php file.

#
# Find  
#
<?php
#
# Replace
#
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

edit Fb.php file

#
# Find  
#
<?php
#
# Replace
#
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

Edit config/autoload.php file

#
# Find
#
$autoload['libraries'] = array();
#
# Replace
#
$autoload['libraries'] = array("firephp", "fb");

How to use it?

function index()
{
  $a = "test";
  $array = array("a" => "1", "b" => "2");      
  //$this->firephp->log($a, 'ERROR');
  //$this->firephp->log($a, 'ERROR');    
  $this->fb->setEnabled(true);    
  $this->fb->info($array, "info");
  $this->fb->warn($array, "warn");
  $this->fb->error($array, "error");
  $this->fb->group('Test Group');
  $this->fb->log('Hello World');
  $this->fb->groupEnd();
}

Related View