EC-CUBEのデバッグに「debuglib」を使う。
行うこと。
- eccube-2.4.4/data/module配下にdebuglib.phpを置く。
- 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); } }
関連リンク
PHPのデバッグに便利「debuglib」 - 4丁目より
EC-CUBE2.0の設計思想があったのでメモメモ。 - 4丁目より
EC-CUBEをカスタマイズするときやデバッグ時に便利 SC_Utils::sfPrintR() - yuhei.kagaya
*1:sfPrintR()はDEBUG_MODEがtrueでないと出力されません。