Exemple #1
0
 private static function dumpObject(&$var, $options, $level)
 {
     $fields = self::exportObject($var, $options[self::OBJECT_EXPORTERS]);
     $editor = NULL;
     if ($options[self::LOCATION] & self::LOCATION_CLASS) {
         $rc = $var instanceof \Closure ? new \ReflectionFunction($var) : new \ReflectionClass($var);
         $editor = Helpers::editorUri($rc->getFileName(), $rc->getStartLine());
     }
     $out = '<span class="tracy-dump-object"' . ($editor ? Helpers::formatHtml(' title="Declared in file % on line %" data-tracy-href="%"', $rc->getFileName(), $rc->getStartLine(), $editor) : '') . '>' . htmlspecialchars(Helpers::getClass($var)) . '</span> <span class="tracy-dump-hash">#' . substr(md5(spl_object_hash($var)), 0, 4) . '</span>';
     static $list = array();
     if (empty($fields)) {
         return $out . "\n";
     } elseif (in_array($var, $list, TRUE)) {
         return $out . " { <i>RECURSION</i> }\n";
     } elseif (!$options[self::DEPTH] || $level < $options[self::DEPTH] || $var instanceof \Closure) {
         $collapsed = $level ? count($fields) >= $options[self::COLLAPSE_COUNT] : (is_int($options[self::COLLAPSE]) ? count($fields) >= $options[self::COLLAPSE] : $options[self::COLLAPSE]);
         $out = '<span class="tracy-toggle' . ($collapsed ? ' tracy-collapsed' : '') . '">' . $out . "</span>\n<div" . ($collapsed ? ' class="tracy-collapsed"' : '') . '>';
         $list[] = $var;
         foreach ($fields as $k => &$v) {
             $vis = '';
             if (isset($k[0]) && $k[0] === "") {
                 $vis = ' <span class="tracy-dump-visibility">' . ($k[1] === '*' ? 'protected' : 'private') . '</span>';
                 $k = substr($k, strrpos($k, "") + 1);
             }
             $k = preg_match('#^\\w{1,50}\\z#', $k) ? $k : '"' . htmlspecialchars(self::encodeString($k, $options[self::TRUNCATE]), ENT_NOQUOTES, 'UTF-8') . '"';
             $out .= '<span class="tracy-dump-indent">   ' . str_repeat('|  ', $level) . '</span>' . '<span class="tracy-dump-key">' . $k . "</span>{$vis} => " . self::dumpVar($v, $options, $level + 1);
         }
         array_pop($list);
         return $out . '</div>';
     } else {
         return $out . " { ... }\n";
     }
 }