object = $object; parent::__construct(); } /** * @return string The rendered debugger */ public function __toString() { return (string)$this->forTemplate(); } /** * Return debugging information, as XHTML. If a field name is passed, it will show debugging information on that * field, otherwise it will show information on all methods and fields. * * @param string $field the field name * @return string */ public function forTemplate($field = null) { // debugging info for a specific field $class = get_class($this->object); if ($field) { return "Debugging Information for {$class}->{$field}
" . ($this->object->hasMethod($field) ? "Has method '$field'
" : null) . ($this->object->hasField($field) ? "Has field '$field'
" : null); } // debugging information for the entire class $reflector = new ReflectionObject($this->object); $debug = "Debugging Information: all methods available in '{$class}'
'; if ($this->object->hasMethod('toMap')) { $debug .= "Debugging Information: all fields available in '{$class}'
"; } // check for an extra attached data if ($this->object->hasMethod('data') && $this->object->data() != $this->object) { $debug .= ViewableData_Debugger::create($this->object->data())->forTemplate(); } return $debug; } }