改名
This commit is contained in:
@@ -299,3 +299,53 @@ if (!function_exists('merge')) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!function_exists('jTraceEx')) {
|
||||
|
||||
/**
|
||||
* @param $e
|
||||
* @param null $seen
|
||||
* @return string
|
||||
*/
|
||||
function jTraceEx($e, $seen = null)
|
||||
{
|
||||
$starter = $seen ? 'Caused by: ' : '';
|
||||
$result = array();
|
||||
if (!$seen) $seen = array();
|
||||
$trace = $e->getTrace();
|
||||
$prev = $e->getPrevious();
|
||||
$result[] = sprintf('%s%s: %s', $starter, get_class($e), $e->getMessage());
|
||||
$file = $e->getFile();
|
||||
$line = $e->getLine();
|
||||
while (true) {
|
||||
$current = "$file:$line";
|
||||
if (is_array($seen) && in_array($current, $seen)) {
|
||||
$result[] = sprintf(' ... %d more', count($trace) + 1);
|
||||
break;
|
||||
}
|
||||
$result[] = sprintf(' at %s%s%s(%s%s%s)',
|
||||
count($trace) && array_key_exists('class', $trace[0]) ? str_replace('\\', '.', $trace[0]['class']) : '',
|
||||
count($trace) && array_key_exists('class', $trace[0]) && array_key_exists('function', $trace[0]) ? '.' : '',
|
||||
count($trace) && array_key_exists('function', $trace[0]) ? str_replace('\\', '.', $trace[0]['function']) : '(main)',
|
||||
$line === null ? $file : basename($file),
|
||||
$line === null ? '' : ':',
|
||||
$line === null ? '' : $line);
|
||||
if (is_array($seen))
|
||||
$seen[] = "$file:$line";
|
||||
if (!count($trace))
|
||||
break;
|
||||
$file = array_key_exists('file', $trace[0]) ? $trace[0]['file'] : 'Unknown Source';
|
||||
$line = array_key_exists('file', $trace[0]) && array_key_exists('line', $trace[0]) && $trace[0]['line'] ? $trace[0]['line'] : null;
|
||||
array_shift($trace);
|
||||
}
|
||||
$result = join("\n", $result);
|
||||
if ($prev)
|
||||
$result .= "\n" . jTraceEx($prev, $seen);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user