/** * Render a dump for an object * * @param mixed $data * @param string $name * @access private * @static */ private static function _object(&$data, $name) { $reflection = new ReflectionObject($data); $childCount = count($reflection->getProperties()); $collapsed = Dumper::_isCollapsed(self::$_level, $childCount); $class = get_class($data); $dont_traverse = Dumper::_config('dont_traverse', 'objects', array()); // Traverse deeper if we're on level 0, or otherwise if the current class // is not in the dont_traverse config setting $traverse_this = self::$_level == 0 || !in_array($class, $dont_traverse); // Setup the CSS classes depending on how many children there are if ($childCount > 0 && $collapsed) { $elementClasses = ' dumper-expand'; } elseif ($childCount > 0 && $traverse_this) { $elementClasses = ' dumper-expand dumper-opened'; } else { $elementClasses = ''; } $output = sprintf('<li class="dumper-child"> <div class="dumper-element%s"', $elementClasses); if (count($data) > 0) { $output .= 'onClick="dumper.toggle(this);"'; } $output .= 'onMouseOver="dumper.over(this);" onMouseOut="dumper.out(this);">'; $addendum = ''; if ($childCount == 0) { $addendum = ' (empty)'; } else { if (!$traverse_this) { $addendum = ' (skipped)'; } } $output .= sprintf('<a class="dumper-name"></a> <em class="dumper-type">obj</em> ', $name); $output .= sprintf('%s <strong class="dumper-class">%s</strong>%s</div>', Dumper::get_separator(), $class, $addendum); echo $output; if ($childCount && $traverse_this) { Dumper::_vars($data); } echo '</li>'; }