developer's diary

最近はc#のエントリが多いです

EC-CUBEのデバッグに「debuglib」を使う。

行うこと。

  1. eccube-2.4.4/data/module配下にdebuglib.phpを置く。
  2. eccube-2.4.4/data/class_extends/util_extends/SC_Utils_Ex.phpを修正する

eccube-2.4.4/data/module配下にdebuglib.phpを置く。

Debuglib for PHP5よりDLして、eccube-2.4.4/data/module配下に置く。

eccube-2.4.4/data/class_extends/util_extends/SC_Utils_Ex.phpを修正する

requires部分で、debuglibを読み込む。

require_once(CLASS_PATH . "util/SC_Utils.php");
require_once(DATA_PATH . 'module/debuglib.php');

SC_Utilsクラスを元に、SC_Utils_ExクラスにsfPrintRメソッドを記述
var_dumpしてるところをprint_aで記述。

class SC_Utils_Ex extends SC_Utils {

    /* デバッグ用 ------------------------------------------------------------------------------------------------*/
    function sfPrintR($obj) {
        print("<div style='font-size: 12px;color: #00FF00;'>\n");
        print("<strong>**デバッグ中**</strong><br />\n");
        print("<pre>\n");
        //print_r($obj);
        print_a($obj);
        print("</pre>\n");
        print("<strong>**デバッグ中**</strong></div>\n");
    }

}
patch
diff --git "a/C:\\Users\\mitsugi\\AppData\\Local\\Temp\\SC_Utils_Ex_HEAD.php" "b/C:\\Users\\mitsugi\\Desktop\\eccube-2.4.4\\data\\class_extends\\util_extends\\SC_Utils_Ex.php"
index e3432aa..66f5937 100644
--- "a/C:\\Users\\mitsugi\\AppData\\Local\\Temp\\SC_Utils_Ex_HEAD.php"
+++ "b/C:\\Users\\mitsugi\\Desktop\\eccube-2.4.4\\data\\class_extends\\util_extends\\SC_Utils_Ex.php"
@@ -23,6 +23,7 @@
 
 // {{{ requires
 require_once(CLASS_PATH . "util/SC_Utils.php");
+require_once(DATA_PATH . 'module/debuglib.php');
 
 /**
  * 各種ユーティリティクラス(拡張).
@@ -35,5 +36,17 @@ require_once(CLASS_PATH . "util/SC_Utils.php");
  */
 class SC_Utils_Ex extends SC_Utils {
 
+
+    /* デバッグ用 ------------------------------------------------------------------------------------------------*/
+    function sfPrintR($obj) {
+        print("<div style='font-size: 12px;color: #00FF00;'>\n");
+        print("<strong>**デバッグ中**</strong><br />\n");
+        print("<pre>\n");
+        //print_r($obj);
+        print_a($obj);
+        print("</pre>\n");
+        print("<strong>**デバッグ中**</strong></div>\n");
+    }
+
 }
 ?>

使い方

SC_Utils::sfPrintRを使う*1

<?php
SC_Utils::sfPrintR( $var );

親クラスがLC_Pageとかだと、pメソッドがSC_Utils::sfPrintRのラッパーになっているので、下記みたいな感じでdebugできる。

<?php
$this->p($this);
<?php
class LC_Page {
    /**
     * デバック出力を行う.
     *
     * デバック用途のみに使用すること.
     *
     * @access protected
     * @param mixed $val デバックする要素
     * @return void
     */
    function p($val) {
        SC_Utils_Ex::sfPrintR($val);
    }
}

*1:sfPrintR()はDEBUG_MODEがtrueでないと出力されません。