Beispiel #1
0
 public static function dump($data = null)
 {
     if (!self::enabled()) {
         return '';
     }
     list($names, $modifiers, $callee, $previousCaller, $miniTrace) = self::_getCalleeInfo(defined('DEBUG_BACKTRACE_IGNORE_ARGS') ? debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) : debug_backtrace());
     $modeOldValue = self::enabled();
     $firstRunOldValue = self::$_firstRun;
     # process modifiers: @, +, !, ~ and -
     if (strpos($modifiers, '-') !== false) {
         self::$_firstRun = true;
         while (ob_get_level()) {
             ob_end_clean();
         }
     }
     if (strpos($modifiers, '!') !== false) {
         $expandedByDefaultOldValue = self::$expandedByDefault;
         self::$expandedByDefault = true;
     }
     if (strpos($modifiers, '+') !== false) {
         $maxLevelsOldValue = self::$maxLevels;
         self::$maxLevels = false;
     }
     if (strpos($modifiers, '@') !== false) {
         $returnOldValue = self::$returnOutput;
         self::$returnOutput = true;
         self::$_firstRun = true;
     }
     if (strpos($modifiers, '~') !== false) {
         self::enabled(self::MODE_WHITESPACE);
     }
     # set mode for current run
     $mode = self::enabled();
     if ($mode === true) {
         $mode = PHP_SAPI === 'cli' ? self::MODE_CLI : self::MODE_RICH;
     }
     self::enabled($mode);
     $decorator = self::enabled() === self::MODE_RICH ? 'Kint_Decorators_Rich' : 'Kint_Decorators_Plain';
     $output = '';
     if (self::$_firstRun) {
         $output .= call_user_func(array($decorator, 'init'));
     }
     $trace = false;
     if ($names === array(null) && func_num_args() === 1 && $data === 1) {
         # Kint::dump(1) shorthand
         $trace = KINT_PHP53 ? debug_backtrace(true) : debug_backtrace();
     } elseif (func_num_args() === 1 && is_array($data)) {
         $trace = $data;
         # test if the single parameter is result of debug_backtrace()
     }
     $trace and $trace = self::_parseTrace($trace);
     $output .= call_user_func(array($decorator, 'wrapStart'));
     if ($trace) {
         $output .= call_user_func(array($decorator, 'decorateTrace'), $trace);
     } else {
         $data = func_num_args() === 0 ? array("[[no arguments passed]]") : func_get_args();
         foreach ($data as $k => $argument) {
             kintParser::reset();
             # when the dump arguments take long to generate output, user might have changed the file and
             # Kint might not parse the arguments correctly, so check if names are set and while the
             # displayed names might be wrong, at least don't throw an error
             $output .= call_user_func(array($decorator, 'decorate'), kintParser::factory($argument, isset($names[$k]) ? $names[$k] : ''));
         }
     }
     $output .= call_user_func(array($decorator, 'wrapEnd'), $callee, $miniTrace, $previousCaller);
     self::enabled($modeOldValue);
     self::$_firstRun = false;
     if (strpos($modifiers, '~') !== false) {
         self::$_firstRun = $firstRunOldValue;
     } else {
         self::enabled($modeOldValue);
     }
     if (strpos($modifiers, '!') !== false) {
         self::$expandedByDefault = $expandedByDefaultOldValue;
     }
     if (strpos($modifiers, '+') !== false) {
         self::$maxLevels = $maxLevelsOldValue;
     }
     if (strpos($modifiers, '@') !== false) {
         self::$returnOutput = $returnOldValue;
         self::$_firstRun = $firstRunOldValue;
         return $output;
     }
     if (self::$returnOutput) {
         return $output;
     }
     echo $output;
 }
Beispiel #2
0
 /**
  * Dump information about variables, accepts any number of parameters, supports modifiers:
  *
  *  clean up any output before kint and place the dump at the top of page:
  *   - Kint::dump()
  *  *****
  *  expand all nodes on display:
  *   ! Kint::dump()
  *  *****
  *  dump variables disregarding their depth:
  *   + Kint::dump()
  *  *****
  *  return output instead of displaying it:
  *   @ Kint::dump()
  *  *****
  *  force output as plain text
  *   ~ Kint::dump()
  *
  * Modifiers are supported by all dump wrapper functions, including Kint::trace(). Space is optional.
  *
  *
  * You can also use the following shorthand to display debug_backtrace():
  *   Kint::dump( 1 );
  *
  * Passing the result from debug_backtrace() to kint::dump() as a single parameter will display it as trace too:
  *   $trace = debug_backtrace( true );
  *   Kint::dump( $trace );
  *  Or simply:
  *   Kint::dump( debug_backtrace() );
  *
  *
  * @param mixed $data
  *
  * @return void|string
  */
 public static function dump($data = null)
 {
     if (!self::enabled()) {
         return '';
     }
     list($names, $modifiers, $callee, $previousCaller, $miniTrace) = self::_getCalleeInfo(defined('DEBUG_BACKTRACE_IGNORE_ARGS') ? debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) : debug_backtrace());
     $modeOldValue = self::enabled();
     # process modifiers: @, +, !, ~ and -
     if (strpos($modifiers, '-') !== false) {
         self::$_firstRun = true;
         while (ob_get_level()) {
             ob_end_clean();
         }
     }
     if (strpos($modifiers, '!') !== false) {
         $expandedByDefaultOldValue = self::$expandedByDefault;
         self::$expandedByDefault = true;
     }
     if (strpos($modifiers, '+') !== false) {
         $maxLevelsOldValue = self::$maxLevels;
         self::$maxLevels = false;
     }
     if (strpos($modifiers, '@') !== false) {
         $returnOldValue = self::$returnOutput;
         $firstRunOldValue = self::$_firstRun;
         self::$returnOutput = true;
         self::$_firstRun = true;
     }
     if (strpos($modifiers, '~') !== false) {
         self::enabled(self::MODE_WHITESPACE);
     }
     # set mode for current run
     $mode = self::enabled();
     if ($mode === true) {
         $mode = PHP_SAPI === 'cli' ? self::MODE_CLI : self::MODE_RICH;
     }
     self::enabled($mode);
     /** @var Kint_Decorators_Rich|Kint_Decorators_Plain $decorator */
     $decorator = self::enabled() === self::MODE_RICH ? 'Kint_Decorators_Rich' : 'Kint_Decorators_Plain';
     $output = '';
     if (self::$_firstRun) {
         $output .= $decorator::init();
     }
     $trace = false;
     if ($names === array(null) && func_num_args() === 1 && $data === 1) {
         $trace = debug_backtrace(true);
         # Kint::dump(1) shorthand
     } elseif (func_num_args() === 1 && is_array($data)) {
         $trace = $data;
         # test if the single parameter is result of debug_backtrace()
     }
     $trace and $trace = self::_parseTrace($trace);
     $output .= $decorator::wrapStart();
     if ($trace) {
         $output .= $decorator::decorateTrace($trace);
     } else {
         $data = func_num_args() === 0 ? array("[[no arguments passed]]") : func_get_args();
         foreach ($data as $k => $argument) {
             kintParser::reset();
             $output .= $decorator::decorate(kintParser::factory($argument, $names[$k]));
         }
     }
     $output .= $decorator::wrapEnd($callee, $miniTrace, $previousCaller);
     self::enabled($modeOldValue);
     if (strpos($modifiers, '~') === false) {
         self::enabled($modeOldValue);
     }
     if (strpos($modifiers, '!') !== false) {
         self::$expandedByDefault = $expandedByDefaultOldValue;
     }
     if (strpos($modifiers, '+') !== false) {
         self::$maxLevels = $maxLevelsOldValue;
     }
     if (strpos($modifiers, '@') !== false) {
         self::$returnOutput = $returnOldValue;
         self::$_firstRun = $firstRunOldValue;
         return $output;
     }
     if (self::$returnOutput) {
         return $output;
     }
     echo $output;
     return '';
 }