public function assert($desc, $condition) { if ($condition) { echo $desc . ' <span class="pass">OK</span><br/>'; } else { echo $desc . ' <span class="fail">FAIL</span><br/>'; $this->teardown(); $bt = debug_backtrace(); $bt = array_shift($bt); echo "<hr/><b>{$bt['file']}: ({$bt['line']})</b><br/>"; echo Kohana::debug_source($bt['file'], $bt['line']); $this->after(TRUE); exit; } }
echo html::chars($message); ?> </span></h1> <div id="<?php echo $error_id; ?> " class="content"> <p><span class="file"><?php echo Kohana::debug_path($file); ?> [ <?php echo $line; ?> ]</span></p> <?php echo Kohana::debug_source($file, $line); ?> <ol class="trace"> <?php foreach (Kohana::trace($trace) as $i => $step) { ?> <li> <p> <span class="file"> <?php if ($step['file']) { $source_id = $error_id . 'source' . $i; ?> <a href="#<?php echo $source_id; ?>
/** * Returns an array of HTML strings that represent each step in the backtrace. * * // Displays the entire current backtrace * echo implode('<br/>', Kohana::trace()); * * @param string path to debug * @return string */ public static function trace(array $trace = NULL) { if ($trace === NULL) { // Start a new trace $trace = debug_backtrace(); } // Non-standard function calls $statements = array('include', 'include_once', 'require', 'require_once'); $output = array(); foreach ($trace as $step) { if (!isset($step['function'])) { // Invalid trace step continue; } if (isset($step['file']) and isset($step['line'])) { // Include the source of this step $source = Kohana::debug_source($step['file'], $step['line']); } if (isset($step['file'])) { $file = $step['file']; if (isset($step['line'])) { $line = $step['line']; } } // function() $function = $step['function']; if (in_array($step['function'], $statements)) { if (empty($step['args'])) { // No arguments $args = array(); } else { // Sanitize the file path $args = array($step['args'][0]); } } elseif (isset($step['args'])) { if (!function_exists($step['function']) or strpos($step['function'], '{closure}') !== FALSE) { // Introspection on closures or language constructs in a stack trace is impossible $params = NULL; } else { if (isset($step['class'])) { if (method_exists($step['class'], $step['function'])) { $reflection = new ReflectionMethod($step['class'], $step['function']); } else { $reflection = new ReflectionMethod($step['class'], '__call'); } } else { $reflection = new ReflectionFunction($step['function']); } // Get the function parameters $params = $reflection->getParameters(); } $args = array(); foreach ($step['args'] as $i => $arg) { if (isset($params[$i])) { // Assign the argument by the parameter name $args[$params[$i]->name] = $arg; } else { // Assign the argument by number $args[$i] = $arg; } } } if (isset($step['class'])) { // Class->method() or Class::method() $function = $step['class'] . $step['type'] . $step['function']; } $output[] = array('function' => $function, 'args' => isset($args) ? $args : NULL, 'file' => isset($file) ? $file : NULL, 'line' => isset($line) ? $line : NULL, 'source' => isset($source) ? $source : NULL); unset($function, $args, $file, $line, $source); } return $output; }
echo __('Error'); ?> </strong><br/> <p><?php echo $result->getMessage(); ?> </p> <div><?php echo Kohana::debug_path($result->getFile()); ?> [ <?php echo $result->getLine(); ?> ]</div> <pre class="source"><code><?php echo Kohana::debug_source($result->getFile(), $result->getLine()); ?> </code></pre> </td> <?php } ?> </tr> <?php } ?> <?php