示例#1
0
 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;
     }
 }
示例#2
0
文件: error.php 项目: schelmo/core
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;
        ?>
示例#3
0
 /**
  * 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;
 }
示例#4
0
文件: html.php 项目: banks/unittest
                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