pictcode / lib / Cake / View / Elements / exception_stack_trace.ctp @ 635eef61
履歴 | 表示 | アノテート | ダウンロード (2.324 KB)
| 1 | 635eef61 | spyder1211 | <?php |
|---|---|---|---|
| 2 | /** |
||
| 3 | * Prints a stack trace for an exception |
||
| 4 | * |
||
| 5 | * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) |
||
| 6 | * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) |
||
| 7 | * |
||
| 8 | * Licensed under The MIT License |
||
| 9 | * For full copyright and license information, please see the LICENSE.txt |
||
| 10 | * Redistributions of files must retain the above copyright notice. |
||
| 11 | * |
||
| 12 | * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) |
||
| 13 | * @link http://cakephp.org CakePHP(tm) Project |
||
| 14 | * @package Cake.View.Elements |
||
| 15 | * @since CakePHP(tm) v 1.3 |
||
| 16 | * @license http://www.opensource.org/licenses/mit-license.php MIT License |
||
| 17 | */ |
||
| 18 | |||
| 19 | App::uses('Debugger', 'Utility');
|
||
| 20 | |||
| 21 | ?> |
||
| 22 | <h3>Stack Trace</h3> |
||
| 23 | <ul class="cake-stack-trace"> |
||
| 24 | <?php foreach ($error->getTrace() as $i => $stack): ?> |
||
| 25 | <li><?php |
||
| 26 | $excerpt = $arguments = ''; |
||
| 27 | $params = array(); |
||
| 28 | |||
| 29 | if (isset($stack['file']) && isset($stack['line'])): |
||
| 30 | printf( |
||
| 31 | '<a href="#" onclick="traceToggle(event, \'file-excerpt-%s\')">%s line %s</a>', |
||
| 32 | $i, |
||
| 33 | Debugger::trimPath($stack['file']), |
||
| 34 | $stack['line'] |
||
| 35 | ); |
||
| 36 | $excerpt = sprintf('<div id="file-excerpt-%s" class="cake-code-dump" style="display:none;"><pre>', $i);
|
||
| 37 | $excerpt .= implode("\n", Debugger::excerpt($stack['file'], $stack['line'] - 1, 2));
|
||
| 38 | $excerpt .= '</pre></div> '; |
||
| 39 | else: |
||
| 40 | echo '<a href="#">[internal function]</a>'; |
||
| 41 | endif; |
||
| 42 | echo ' → '; |
||
| 43 | if ($stack['function']): |
||
| 44 | $args = array(); |
||
| 45 | if (!empty($stack['args'])): |
||
| 46 | foreach ((array)$stack['args'] as $arg): |
||
| 47 | $args[] = Debugger::getType($arg); |
||
| 48 | $params[] = Debugger::exportVar($arg, 4); |
||
| 49 | endforeach; |
||
| 50 | endif; |
||
| 51 | |||
| 52 | $called = isset($stack['class']) ? $stack['class'] . $stack['type'] . $stack['function'] : $stack['function']; |
||
| 53 | |||
| 54 | printf( |
||
| 55 | '<a href="#" onclick="traceToggle(event, \'trace-args-%s\')">%s(%s)</a> ', |
||
| 56 | $i, |
||
| 57 | $called, |
||
| 58 | h(implode(', ', $args))
|
||
| 59 | ); |
||
| 60 | $arguments = sprintf('<div id="trace-args-%s" class="cake-code-dump" style="display: none;"><pre>', $i);
|
||
| 61 | $arguments .= h(implode("\n", $params));
|
||
| 62 | $arguments .= '</pre></div>'; |
||
| 63 | endif; |
||
| 64 | echo $excerpt; |
||
| 65 | echo $arguments; |
||
| 66 | ?></li> |
||
| 67 | <?php endforeach; ?> |
||
| 68 | </ul> |
||
| 69 | <script type="text/javascript"> |
||
| 70 | function traceToggle(event, id) {
|
||
| 71 | var el = document.getElementById(id); |
||
| 72 | el.style.display = (el.style.display === 'block') ? 'none' : 'block'; |
||
| 73 | event.preventDefault(); |
||
| 74 | return false; |
||
| 75 | } |
||
| 76 | </script> |