Changeset 18814


Ignore:
Timestamp:
2010/09/20 03:19:39 (11 years ago)
Author:
Seasoft
Message:

#624(軽微な表示乱れを修正)

  • #567 に伴いバックトレース切捨ての位置が不自然になるので、handle_error 以前を切り捨てるように変更。
  • デバッグ用のメッセージの出力位置を変更。SC_Query#traceError が生成したメッセージの出力を意識する。
  • 現状では print_r を利用する必要は無いようなので、echo を利用するように変更。
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/error/LC_Page_Error_SystemError.php

    r18809 r18814  
    9292            echo '<div>▼▼▼ デバッグ情報ここから ▼▼▼</div>'; 
    9393            echo '<pre>'; 
    94             print_r(htmlspecialchars($this->sfGetErrMsg(), ENT_QUOTES, CHAR_CODE)); 
     94            echo htmlspecialchars($this->sfGetErrMsg(), ENT_QUOTES, CHAR_CODE); 
    9595            echo '</pre>'; 
    9696            echo '<div>▲▲▲ デバッグ情報ここまで ▲▲▲</div>'; 
     
    117117        $errmsg .= $this->lfGetErrMsgHead(); 
    118118        $errmsg .= "\n"; 
    119          
    120         // デバッグ用のメッセージが指定されている場合 
    121         if (!empty($this->arrDebugMsg)) { 
    122             $errmsg .= implode("\n\n", $this->arrDebugMsg) . "\n"; 
    123             $errmsg .= "\n"; 
    124         } 
    125          
     119 
    126120        // PEAR エラーを伴う場合 
    127121        if (!is_null($this->pearResult)) { 
     
    136130        // (上に該当せず)バックトレースを生成できる環境(一般的には PHP 4 >= 4.3.0, PHP 5)の場合 
    137131        else if (function_exists("debug_backtrace")) { 
    138             $errmsg .= SC_Utils_Ex::sfBacktraceToString(array_slice(debug_backtrace(), 2)); 
     132            $backtrace = debug_backtrace(); 
     133 
     134            // バックトレースのうち handle_error 以前は通常不要と考えられるので削除 
     135            $cnt = 0; 
     136            $offset = 0; 
     137            foreach ($backtrace as $key => $arrLine) { 
     138                $cnt ++; 
     139                if (!isset($arrLine['file']) && $arrLine['function'] === 'handle_error') { 
     140                    $offset = $cnt; 
     141                    break; 
     142                } 
     143            } 
     144            if ($offset !== 0) { 
     145                $backtrace = array_slice($backtrace, $offset); 
     146            } 
     147 
     148            $errmsg .= SC_Utils_Ex::sfBacktraceToString($backtrace); 
    139149        } 
    140          
     150 
     151        // デバッグ用のメッセージが指定されている場合 
     152        if (!empty($this->arrDebugMsg)) { 
     153            $errmsg .= implode("\n\n", $this->arrDebugMsg) . "\n"; 
     154        } 
     155 
    141156        return $errmsg; 
    142157    } 
Note: See TracChangeset for help on using the changeset viewer.