/** * 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 if ($field) { return "<b>Debugging Information for {$this->class}->{$field}</b><br/>" . ($this->object->hasMethod($field) ? "Has method '{$field}'<br/>" : null) . ($this->object->hasField($field) ? "Has field '{$field}'<br/>" : null); } // debugging information for the entire class $reflector = new ReflectionObject($this->object); $debug = "<b>Debugging Information: all methods available in '{$this->object->class}'</b><br/><ul>"; foreach ($this->object->allMethodNames() as $method) { // check that the method is public if ($method[0] === strtoupper($method[0]) && $method[0] != '_') { if ($reflector->hasMethod($method) && ($method = $reflector->getMethod($method))) { if ($method->isPublic()) { $debug .= "<li>\${$method->getName()}"; if (count($method->getParameters())) { $debug .= ' <small>(' . implode(', ', $method->getParameters()) . ')</small>'; } $debug .= '</li>'; } } else { $debug .= "<li>\${$method}</li>"; } } } $debug .= '</ul>'; if ($this->object->hasMethod('toMap')) { $debug .= "<b>Debugging Information: all fields available in '{$this->object->class}'</b><br/><ul>"; foreach ($this->object->toMap() as $field => $value) { $debug .= "<li>\${$field}</li>"; } $debug .= "</ul>"; } // 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; }
/** * 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. * @var string $field The field name. * @return string */ function forTemplate($field = null) { if ($field) { return "<b>Info on {$field}:<br/>" . ($this->obj->hasMethod($field) ? "Has method '{$field}'. " : "") . ($this->obj->hasField($field) ? "Has field '{$field}'. " : ""); } else { echo "<b>Debug: all methods available in {$this->obj->class}</b><br/>"; echo "<ul>"; $names = $this->obj->allMethodNames(); foreach ($names as $name) { if (strtoupper($name[0]) == $name[0] && $name[0] != "_") { echo "<li>\${$name}</li>"; } } echo "</ul>"; if ($this->obj->hasMethod('getAllFields')) { echo "<b>Debug: all fields available in {$this->obj->class}</b><br/>"; echo "<ul>"; $data = $this->obj->getAllFields(); foreach ($data as $key => $val) { echo "<li>\${$key}</li>"; } echo "</ul>"; } } if ($this->obj->hasMethod('data')) { if ($this->obj->data() != $this->obj) { $d = new ViewableData_Debugger($this->obj->data()); echo $d->forTemplate(); } } }