/
exception_stack_trace.ctp
62 lines (56 loc) · 1.89 KB
/
exception_stack_trace.ctp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/**
* Prints a stack trace for an exception
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 1.3.0
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
use Cake\Error\Debugger;
?>
<?php
foreach ($error->getTrace() as $i => $stack):
$excerpt = $params = [];
if (isset($stack['file']) && isset($stack['line'])):
$excerpt = Debugger::excerpt($stack['file'], $stack['line'] - 1, 4);
endif;
if (isset($stack['file'])):
$file = $stack['file'];
else:
$file = '[internal function]';
endif;
if ($stack['function']):
if (!empty($stack['args'])):
foreach ((array)$stack['args'] as $arg):
$params[] = Debugger::exportVar($arg, 4);
endforeach;
else:
$params[] = 'No arguments';
endif;
endif;
?>
<div id="stack-frame-<?= $i ?>" style="display:none;" class="stack-details">
<span class="stack-frame-file"><?= h($file) ?></span>
<a href="#" class="stack-frame-args" data-target="stack-args-<?= $i ?>">toggle arguments</a>
<table class="code-excerpt" cellspacing="0" cellpadding="0">
<?php $lineno = isset($stack['line']) ? $stack['line'] - 4 : 0 ?>
<?php foreach ($excerpt as $l => $line): ?>
<tr>
<td class="excerpt-number" data-number="<?= $lineno + $l ?>"></td>
<td class="excerpt-line"><?= $line ?></td>
</tr>
<?php endforeach; ?>
</table>
<div class="code-dump" id="stack-args-<?= $i ?>" style="display: none;">
<pre><?= implode("\n", $params) ?></pre>
</div>
</div>
<?php endforeach; ?>