php-tool-box:stacktrace
PHPのスタックトレースを見やすくする - StackTrace.php
スタックトレース(バックトレース)を見やすくするクラスです。
ユーザーエラーのハンドリングなんかで使う機会があるかもです。
<?php class StackTrace { /** * スタックトレースを全部繋げて文字列にする * @param string $delim スタックトレース間の区切り文字。デフォルトは改行 * @return string 文字列にしたスタックトレース */ public static function toString($delim = "\n") { $arr = array(); foreach (debug_backtrace() as $trace) { $args = array(); foreach ($trace['args'] as $arg) { $args[] = StackTrace::_var2str($arg); } $line = $trace['class'] . $trace['type'] . $trace['function']; $line .= '(' . implode(', ', $args) . ')'; $line .= ' at ' . $trace['file'] . ' (' . $trace['line'] . ')'; $arr[] = $line; } return implode($delim, $arr); } /** * 値を表す文字列にする * @private */ private static function _var2str($var) { $type = gettype($var); switch ($type) { case 'boolean': return $var ? 'true' : 'false'; case 'integer': case 'double': return $var; case 'string': return "'$var'"; case 'array': $arr = array(); foreach ($var as $child) { $arr[] = StackTrace::_var2str($child); } return 'array(' . implode(", ", $arr) . ')'; case 'object': return get_class($var) . ' Object'; default: return $type; } } }
php-tool-box/stacktrace.txt · 最終更新: 2008/03/12 23:43 by dgbadmin