Esempio n. 1
0
            <li class="snippet">
              <p>
                <span class="file">
                  <?php 
echo Kohana_Exception::debug_path($file);
?>
[ <?php 
echo $line;
?>
 ]
                </span>
              </p>

              <div class="source">
                <?php 
if (Kohana_Exception::$source_output and $source_code = Kohana_Exception::debug_source($file, $line)) {
    ?>
<code><?php 
    foreach ($source_code as $num => $row) {
        ?>
<span class="line <?php 
        echo $num == $line ? "highlight" : "";
        ?>
"><span class="number"><?php 
        echo $num;
        ?>
</span><?php 
        echo htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET);
        ?>
</span><?php 
    }
Esempio n. 2
0
 /**
  * Returns an array of strings that represent each step in the backtrace.
  *
  * @param   array  trace to analyze
  * @return  array
  */
 public static function trace($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_Exception::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 ($step['function'] === '{closure}') {
                 // Introspection on closures 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;
 }
Esempio n. 3
0
          <ol class="trace">
            <li class="snippet">
              <p>
                <span class="file">
                  <?php 
echo Kohana_Exception::debug_path($file);
?>
[ <?php 
echo $line;
?>
 ]
                </span>
              </p>

              <div class="source">
                <? if (Kohana_Exception::$source_output and $source_code = Kohana_Exception::debug_source($file, $line)): ?><code><? foreach ($source_code as $num => $row): ?><span class="line <?php 
echo $num == $line ? "highlight" : "";
?>
"><span class="number"><?php 
echo $num;
?>
</span><?php 
echo htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET);
?>
</span><? endforeach ?></code>
                <? endif ?>
              </div>
            </li>

            <? if (Kohana_Exception::$trace_output): ?>
            <? foreach (Kohana_Exception::trace($trace) as $i => $step): ?>