function _devel_print_object in Devel 7
Same name and namespace in other branches
- 6 devel.module \_devel_print_object()
Returns formatted listing for an array or object.
Recursive (and therefore magical) function goes through an array or object and returns a nicely formatted listing of its contents.
@todo Currently there are problems sending an array with a varname.
Parameters
array|object $obj: Array or object to recurse through.
string $prefix: Prefix for the output items (example "$node->", "$user->", "$").
string $parents: Used by recursion.
boolean $object: Used by recursion.
Return value
string Formatted html.
1 call to _devel_print_object()
- devel_print_object in ./
devel.module - Displays an object or array.
File
- ./
devel.module, line 1572 - This module holds functions useful for Drupal development.
Code
function _devel_print_object($obj, $prefix = NULL, $parents = NULL, $object = FALSE) {
static $root_type, $out_format;
// TODO: support objects with references. See http://drupal.org/node/234581.
if (isset($obj->view)) {
return;
}
if (!isset($root_type)) {
$root_type = gettype($obj);
if ($root_type == 'object') {
$object = TRUE;
}
}
if (is_object($obj)) {
$obj = (array) $obj;
}
if (is_array($obj)) {
$output = "<dl>\n";
foreach ($obj as $field => $value) {
if ($field === 'devel_flag_reference') {
continue;
}
if (!is_null($parents)) {
if ($object) {
$field = $parents . '->' . $field;
}
else {
if (is_int($field)) {
$field = $parents . '[' . $field . ']';
}
else {
$field = $parents . '[\'' . $field . '\']';
}
}
}
$type = gettype($value);
$show_summary = TRUE;
$summary = NULL;
if ($show_summary) {
switch ($type) {
case 'string':
case 'float':
case 'integer':
if (strlen($value) == 0) {
$summary = t("{empty}");
}
elseif (strlen($value) < 40) {
$summary = htmlspecialchars($value);
}
else {
$summary = format_plural(drupal_strlen($value), '1 character', '@count characters');
}
break;
case 'array':
case 'object':
$summary = format_plural(count((array) $value), '1 element', '@count elements');
break;
case 'boolean':
$summary = $value ? t('TRUE') : t('FALSE');
break;
}
}
if (!is_null($summary)) {
$typesum = '(' . $type . ', <em>' . $summary . '</em>)';
}
else {
$typesum = '(' . $type . ')';
}
$output .= '<span class="devel-attr">';
$output .= "<dt><span class=\"field\">{$prefix}{$field}</span> {$typesum}</dt>\n";
$output .= "<dd>\n";
// Check for references.
if (is_array($value) && isset($value['devel_flag_reference'])) {
$value['devel_flag_reference'] = TRUE;
}
// Check for references to prevent errors from recursions.
if (is_array($value) && isset($value['devel_flag_reference']) && !$value['devel_flag_reference']) {
$value['devel_flag_reference'] = FALSE;
$output .= _devel_print_object($value, $prefix, $field);
}
elseif (is_object($value)) {
$value->devel_flag_reference = FALSE;
$output .= _devel_print_object((array) $value, $prefix, $field, TRUE);
}
else {
$value = is_bool($value) ? $value ? 'TRUE' : 'FALSE' : $value;
$output .= htmlspecialchars(print_r($value, TRUE)) . "\n";
}
$output .= "</dd></span>\n";
}
$output .= "</dl>\n";
}
return $output;
}