debugging function: link to code
| From: | Tim Gallagher | Date: | Fri, 14 Jun 2002 14:58:28 +0000 |
| Subject: | debugging function: link to code | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-7025@lists.php.net to get a copy of this message | ||
There seems to be a bit of interest so here's the code...
download it from sourceforge.
http://sourceforge.net/projects/phpocketknife
-timmyg
At 07:44 AM 6/14/2002 -0700, Jon Abernathy wrote:
>Tim Gallagher writes:
> > A buddy of mine wrote a debugging function while working for me. As of
>now
> > it is Internet Explorer specific, but it could be rewritten (maybe not so)
> > easily to be cross-browser. I have placed it in a file that is included
> > each time via the php.ini config var auto_prepend_file= which has made it
> > become almost like a native php function for me. I use it constantly.
> >
> > It is extremely handy for debugging objects as it gives a much more
> > intuitive view of the object.
> >
> > It uses dhtml to hide branches of arrays and sub objects (when viewing an
> > object)
> > This could become a standard developer's tool if added to pear, however as
> > of right now it is a mess of code. If anyone is interested, I will attach
> > a file containing the code and we can work on it.
> >
> > you can see sample output of the function located at:
> > http://php.smur.net/tim/test/QuickForm_example.php
> > Linux people: keep in mind that this only works on IE so don't get
>grumpy -
> > you've been warned.
> >
> > syntax is rprint($variable);
> >
> > we chose rprint because it's so close to print_r and is easy to remember,
> > plus if you type "print" very much, it's quick to type, and there's no
> > shift to hit for the underscore.
> >
> > comments, offers of help to port to cross browser, and/or offers to clean
> > up code are all welcome
> > flames about linux/css/html/ihatemicroshaftedme/doesn't work for me >
>dev/null
> >
> > -timmyg
>
>Very nice! I could definitely use a class like this, and I'd gladly help out
>with cleaning it up/extending it/whatever.
>
>
>- Jon Abernathy, jon@alpineinternet.com | jon@chuggnutt.com
>
>
>
>--
>PEAR Development Mailing List (http://pear.php.net/)
>To unsubscribe, visit: http://www.php.net/unsub.php
<?php // ------------------------------------------------------------------------------------------------------------------------------------------------ // replacement for print_r ------------------------------------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------------------------------------------ define ("PRINT_SYNTAX", "xxx999PRINT_USAGE999xxx"); function rprint($object,$expanded=FALSE,$advanced=TRUE,$border=TRUE,$first=TRUE,$level=0) { if ($object == PRINT_SYNTAX) { echo "<pre>"; ?>rprint ($object=TRUE,$expanded=FALSE,$advanced=TRUE,$border=TRUE) default values: $object Always required $expanded: FALSE (setting this to true automatically expands all branches) $advanced: TRUE (setting to false displays a simpler structure) $border: TRUE (setting to false turns the outside border off of the advanced view) <? echo "</pre>"; return NULL; }; // end if // $advanced=FALSE; if ($advanced) { $view_string = "[ view ]"; $hide_string = "[ hide ]"; } else { $view_string = "view"; $hide_string = "hide"; }; // end if if (!is_object($object) && !is_array($object)) { $temp->ZqQ5ya = $object; return rprint($temp,$expanded,$advanced); }; // end if if ($level == 0) { ?> <style type="text/css"><!-- .cell {font-family:verdana;border-style:solid;border-width:1px 3px 2px 0px;border-color:FFFFFF;}; <?= (!$advanced ? "a {color:0000FF;text-decoration:none;font-weight:bold;};" : ""); ?> .subobject {border-width:1px 3px 1px 0px;}; .topobject {border-top-width:3px;}; .bottomobject {border-bottom-width:3px;}; //--></style> <? }; // end if global $divid; $object_methods=array(); $html=""; $the_level = $level; $depth_limit = 7; if ($level>=$depth_limit) { $html='<table bgcolor="ffffff" cellspacing=0 cellpadding=0 border=0 style="' . (!$first ? 'padding:5px 15px 12px 9px;' : '') . '"><tr><td>'; $html.='<table cellspacing=0 cellpadding=0 border='.($border?"0":"0").' style="border-style:solid;border-width:'.($advanced ? "2" : "0").'px;border-color:999999;">'; if(count($object_var_names)==0) { $html.="<tr><td bgcolor=\"".$bgcolor."\" valign=top align=right style=\"font-size:".($advanced ? "10pt" : "8pt")."pt;padding:2px;\"> ( depth limit ".$depth_limit." ) </td></tr>"; }; $html.='</table>'; $html.='</td></tr></table>'; return $html; }; // end if if ($first) { $html.='<table cellspacing="0" cellpadding="0" border="0">'; }; // end if if($object===TRUE) { $object=$this; $object_vars=get_object_vars($this); $object_methods=get_class_methods(get_class($this)); } else { if (is_array($object)) { $object_vars=$object; } else { $object_vars=get_object_vars($object); $object_methods=get_class_methods(get_class($object)); }; // end if }; if ($first) { $html.=' <script language="javascript"><!-- function expand(what,who) { if (document.all[what].style.display=="" || document.all[what].style.display=="inline") { document.all[what].style.display="none"; document.all[who].innerHTML="' . $view_string . '"; } else { document.all[what].style.display=""; document.all[who].innerHTML="' . $hide_string . '"; }; // end if }; // end function //--></script> '; }; // end if $object_var_names=array_keys($object_vars); //$object_method_names=array_keys($object_methods); sort($object_var_names); sort($object_methods); $html.='<table bgcolor="ffffff" cellspacing=0 cellpadding=0 border=0 style="' . (!$first ? 'padding:5px 15px 12px 9px;' : '') . '"><tr><td>'; $html.='<table cellspacing=0 cellpadding=0 border='.($border?"0":"0").' style="border-style:solid;border-width:'.($advanced ? "2" : "0").'px;border-color:999999;">'; if(count($object_var_names)==0 && count($object_methods)==0) { $html.="<tr><td bgcolor=\"FFFFFF\" valign=top align=right style=\"font-size:".($advanced ? "10pt" : "8pt").";padding:2px;\"> ( empty ) </td></tr>"; }; if ($object) { $parent = get_parent_class($object); $html.="<tr><td class=\"cell\" colspan=\"3\" bgcolor=\"999999\" valign=top align=left style=\"border-width:3px 3px 1px 3px;color:FFFFFF;font-size:".($advanced ? "10pt" : "8pt").";padding:2px;\"> " . "<b>" . get_class($object) . "</b>" . ($parent != "" ? " extends <b>" . $parent . "</b>" : "") . " </td></tr>"; }; // end if for ($a = 0; $a < count($object_var_names) ; $a++) { global $rprint_track; $html.='<tr>'; //$bgcolor=($border?($a%2?"EEEEEE":"FFFFFF"):($a%2?"EEEEFF":"CCCCFF")); $var=$object_vars[$object_var_names[$a]]; switch(strtolower(gettype($var))) { case "array": $bgcolor="DDDDFF"; $line_bgcolor="AAAACC"; break; case "boolean": $bgcolor="FFFFCC"; $line_bgcolor="CCCC99"; break; case "string": $bgcolor="FFDD99"; $line_bgcolor="CCAA66"; break; case "object": $bgcolor="FFCCFF"; $line_bgcolor="CC99CC"; break; case "integer": $bgcolor="CCFFFF"; $line_bgcolor="AAAACC"; break; case "double": $bgcolor="99EEEE"; $line_bgcolor="66BBBB"; break; case "resource": $bgcolor="CC99CC"; $line_bgcolor="996699"; break; case "unknown type": $bgcolor="FFCCCC"; $line_bgcolor="CC9999"; break; case "null": $bgcolor="EEEEEE"; $line_bgcolor="BBBBBB"; break; default: $bgcolor="FFFFFF"; $line_bgcolor="000000"; break; }; if (!$advanced) { $bgcolor="FFFFFF"; }; // end if $sub = ""; if (gettype($var) == "array" || gettype($var) == "object") { $sub .= " subobject"; }; // end if if ($a==0) { $sub .= " topobject"; }; // end if if ($a==count($object_var_names)-1) { $sub .= " bottomobject"; }; // end if if ($object_var_names[$a] !== "ZqQ5ya") { $html.="<td width=\"0%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top align=".($advanced ? "right" : "left")." style=\"".(!$advanced ? "border-style:solid;border-color:FFFFFF FFFFFF FFFFFF ".$line_bgcolor.";border-width:3px 0px 3px 8px;" : "border-left-width:3px;")."font-size:".($advanced ? "10pt" : "8pt").";\"><nobr> <span style=\"".($advanced ? '' : 'font-size:10pt;').'font-weight:bold;">'.$object_var_names[$a]."</span> </nobr>".($advanced ?"</td>":""); }; // end if $html.=($advanced ? "<td width=\"0%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top align=center style=\"font-size:".($advanced ? "8pt" : "8pt").";\"><nobr> " : "").($advanced ? "" : "(").(gettype($var)=="object" ? (get_class($var) != "stdClass" ? get_class($var). " " : "") : "") . gettype($var).($advanced ? "" : ")")." </nobr>".($advanced ? "</td>" :""); $html.=($advanced ? "<td width=\"100%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top style=\"font-size:".($advanced ? "10pt" : "8pt").";\">" : (gettype($var) != "array" && gettype($var) != "object" ? "=" : "")); switch(gettype($var)) { case "array": $rprint_track[$the_level] = (object) NULL; if ($the_level > 0) { $rprint_track[$the_level-1]->arrays++; }; // end if $subobject = rprint($var,$expanded,$advanced,($border?FALSE:TRUE),FALSE,$level+1); $divid++; $html.=' <a id="debug_link_'.$divid.'" href="javascript:expand(\'debug_div_'.$divid.'\',\'debug_link_'.$divid.'\');">'.($expanded ? $hide_string : $view_string).'</a>' . ($advanced ? ' ' . count($var) . ' elements ' . ($rprint_track[$the_level]->strings > 0 ? ' ' . $rprint_track[$the_level]->strings . ' string' . ($rprint_track[$the_level]->strings > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->booleans > 0 ? ' ' . $rprint_track[$the_level]->booleans . ' boolean' . ($rprint_track[$the_level]->booleans > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->arrays > 0 ? ' ' . $rprint_track[$the_level]->arrays . ' array' . ($rprint_track[$the_level]->arrays > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->integers > 0 ? ' ' . $rprint_track[$the_level]->integers . ' integer' . ($rprint_track[$the_level]->integers > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->doubles > 0 ? ' ' . $rprint_track[$the_level]->doubles . ' double' . ($rprint_track[$the_level]->doubles > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->resources > 0 ? ' ' . $rprint_track[$the_level]->resources . ' resource' . ($rprint_track[$the_level]->resources > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->unknowns > 0 ? ' ' . $rprint_track[$the_level]->unknowns . ' unknown' . ($rprint_track[$the_level]->unknowns > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->nulls > 0 ? ' ' . $rprint_track[$the_level]->nulls . ' null' . ($rprint_track[$the_level]->nulls > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->objects > 0 ? ' ' . $rprint_track[$the_level]->objects . ' object' . ($rprint_track[$the_level]->objects > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->constructors > 0 ? ' ' . $rprint_track[$the_level]->constructors . ' constructor' . ($rprint_track[$the_level]->constructors > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->methods > 0 ? ' ' . $rprint_track[$the_level]->methods . ' method' . ($rprint_track[$the_level]->methods > 1 ? 's' : '') : '' ) . ' ' : ''); $html.='</td><tr><td class="cell" bgcolor="'.$bgcolor.'" colspan="3" id="debug_div_'.$divid.'" style="display:'.($expanded?'inline':'none').';padding-left:'.($advanced ? '15' : '20').'px;border-top-width:2px;border-left-width:3px;">'; $html.=$subobject; break; case "boolean": if ($the_level > 0) { $rprint_track[$the_level-1]->booleans++; }; // end if $html.="<nobr> "; $html.=($var==TRUE?"TRUE":"FALSE"); $html.=" </nobr>"; break; case "string": if ($the_level > 0) { $rprint_track[$the_level-1]->strings++; }; // end if /* if (preg_match("/password/",$object_var_names[$a])) { $var=str_repeat("*",strlen($var)); }; // end if */ $html.=" <nobr>".nl2br(htmlspecialchars($var))."</nobr> "; break; case "object": $rprint_track[$the_level] = (object) NULL; if ($the_level > 0) { $rprint_track[$the_level-1]->objects++; }; // end if $sub_object = rprint($var,$expanded,$advanced,($border?FALSE:TRUE),FALSE,$the_level+1); $divid++; $html.=' <a id="debug_link_'.$divid.'" href="javascript:expand(\'debug_div_'.$divid.'\',\'debug_link_'.$divid.'\');">'.($expanded ? $hide_string : $view_string).'</a>' . ($advanced ? '  ' . ($rprint_track[$the_level]->strings > 0 ? ' ' . $rprint_track[$the_level]->strings . ' string' . ($rprint_track[$the_level]->strings > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->booleans > 0 ? ' ' . $rprint_track[$the_level]->booleans . ' boolean' . ($rprint_track[$the_level]->booleans > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->arrays > 0 ? ' ' . $rprint_track[$the_level]->arrays . ' array' . ($rprint_track[$the_level]->arrays > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->integers > 0 ? ' ' . $rprint_track[$the_level]->integers . ' integer' . ($rprint_track[$the_level]->integers > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->doubles > 0 ? ' ' . $rprint_track[$the_level]->doubles . ' double' . ($rprint_track[$the_level]->doubles > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->resources > 0 ? ' ' . $rprint_track[$the_level]->resources . ' resource' . ($rprint_track[$the_level]->resources > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->unknowns > 0 ? ' ' . $rprint_track[$the_level]->unknowns . ' unknown' . ($rprint_track[$the_level]->unknowns > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->nulls > 0 ? ' ' . $rprint_track[$the_level]->nulls . ' null' . ($rprint_track[$the_level]->nulls > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->objects > 0 ? ' ' . $rprint_track[$the_level]->objects . ' object' . ($rprint_track[$the_level]->objects > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->constructors > 0 ? ' ' . $rprint_track[$the_level]->constructors . ' constructor' . ($rprint_track[$the_level]->constructors > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->methods > 0 ? ' ' . $rprint_track[$the_level]->methods . ' method' . ($rprint_track[$the_level]->methods > 1 ? 's' : '') : '' ) . ' ' : ''); $html.='</td><tr><td class="cell" bgcolor="'.$bgcolor.'" colspan="3" id="debug_div_'.$divid.'" style="display:'.($expanded?'inline':'none').';padding-left:15px;border-top-width:2px;border-left-width:3px;">'; $html.=$sub_object; break; case "integer": if ($the_level > 0) { $rprint_track[$the_level-1]->integers++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "double": if ($the_level > 0) { $rprint_track[$the_level-1]->doubles++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "resource": if ($the_level > 0) { $rprint_track[$the_level-1]->resources++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "unknown type": if ($the_level > 0) { $rprint_track[$the_level-1]->unknowns++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "NULL": if ($the_level > 0) { $rprint_track[$the_level-1]->nulls++; }; // end if $html.="<nobr> "; $html.=" </nobr>"; break; }; $html.="</td>"; $html.='</tr>'."\n"; }; // end for loop $object_name=get_class($object); if ($the_level > 0) { $rprint_track[$the_level-1]->methods=count($object_methods); }; // end if for ($a = 0; $a < count($object_methods) ; $a++) { $bgcolor="99FF99"; $line_bgcolor = "66CC66"; $type="method"; if($object_name==$object_methods[$a]) { $bgcolor="00FF00"; $line_bgcolor = "00CC00"; $type="constructor"; if ($the_level > 0) { $rprint_track[$the_level-1]->constructors++; $rprint_track[$the_level-1]->methods--; }; // end if }; // end if if (!$advanced) { $bgcolor = "FFFFFF"; }; // end if $html.='<tr>'; $html.="<td width=\"0%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=".($advanced ? "right" : "left")." style=\"".(!$advanced ? "border-style:solid;border-color:FFFFFF FFFFFF FFFFFF ".$line_bgcolor.";border-width:3px 0px 3px 8px;" : "border-left-width:3px;")."font-weight:bold;font-size:".($advanced ? "10pt" : "8pt").";\"><nobr> ".$object_methods[$a]." </nobr>".($advanced ? "</td>" : ""); $html.=($advanced ? "<td width=\"0%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=center style=\"font-size:".($advanced ? "10pt" : "8pt").";\">":"")."<nobr>".($advanced ? " " : "(").$type.($advanced ? "" : ")")." </nobr>".($advanced ? "</td>" : ""); $html.=($advanced ? "<td width=\"100%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=left style=\"font-size:".($advanced ? "10pt" : "8pt").";\">":"")."<nobr> "; $html.=' </nobr></td>'; $html.='</tr>'; }; $html.='</table>'; $html.='</td></tr></table>'; if ($level == 0) { echo $html; }; // end if return $html; }; // end function ?>
<?php // ------------------------------------------------------------------------------------------------------------------------------------------------ // replacement for print_r ------------------------------------------------------------------------------------------------------------------- // ------------------------------------------------------------------------------------------------------------------------------------------------ define ("PRINT_SYNTAX", "xxx999PRINT_USAGE999xxx"); function rprint($object,$expanded=FALSE,$advanced=TRUE,$border=TRUE,$first=TRUE,$level=0) { if ($object == PRINT_SYNTAX) { echo "<pre>"; ?>rprint ($object=TRUE,$expanded=FALSE,$advanced=TRUE,$border=TRUE) default values: $object Always required $expanded: FALSE (setting this to true automatically expands all branches) $advanced: TRUE (setting to false displays a simpler structure) $border: TRUE (setting to false turns the outside border off of the advanced view) <? echo "</pre>"; return NULL; }; // end if // $advanced=FALSE; if ($advanced) { $view_string = "[ view ]"; $hide_string = "[ hide ]"; } else { $view_string = "view"; $hide_string = "hide"; }; // end if if (!is_object($object) && !is_array($object)) { $temp->ZqQ5ya = $object; return rprint($temp,$expanded,$advanced); }; // end if if ($level == 0) { ?> <style type="text/css"><!-- .cell {font-family:verdana;border-style:solid;border-width:1px 3px 2px 0px;border-color:FFFFFF;}; <?= (!$advanced ? "a {color:0000FF;text-decoration:none;font-weight:bold;};" : ""); ?> .subobject {border-width:1px 3px 1px 0px;}; .topobject {border-top-width:3px;}; .bottomobject {border-bottom-width:3px;}; //--></style> <? }; // end if global $divid; $object_methods=array(); $html=""; $the_level = $level; $depth_limit = 7; if ($level>=$depth_limit) { $html='<table bgcolor="ffffff" cellspacing=0 cellpadding=0 border=0 style="' . (!$first ? 'padding:5px 15px 12px 9px;' : '') . '"><tr><td>'; $html.='<table cellspacing=0 cellpadding=0 border='.($border?"0":"0").' style="border-style:solid;border-width:'.($advanced ? "2" : "0").'px;border-color:999999;">'; if(count($object_var_names)==0) { $html.="<tr><td bgcolor=\"".$bgcolor."\" valign=top align=right style=\"font-size:".($advanced ? "10pt" : "8pt")."pt;padding:2px;\"> ( depth limit ".$depth_limit." ) </td></tr>"; }; $html.='</table>'; $html.='</td></tr></table>'; return $html; }; // end if if ($first) { $html.='<table cellspacing="0" cellpadding="0" border="0">'; }; // end if if($object===TRUE) { $object=$this; $object_vars=get_object_vars($this); $object_methods=get_class_methods(get_class($this)); } else { if (is_array($object)) { $object_vars=$object; } else { $object_vars=get_object_vars($object); $object_methods=get_class_methods(get_class($object)); }; // end if }; if ($first) { $html.=' <script language="javascript"><!-- function expand(what,who) { if (document.all[what].style.display=="" || document.all[what].style.display=="inline") { document.all[what].style.display="none"; document.all[who].innerHTML="' . $view_string . '"; } else { document.all[what].style.display=""; document.all[who].innerHTML="' . $hide_string . '"; }; // end if }; // end function //--></script> '; }; // end if $object_var_names=array_keys($object_vars); //$object_method_names=array_keys($object_methods); sort($object_var_names); sort($object_methods); $html.='<table bgcolor="ffffff" cellspacing=0 cellpadding=0 border=0 style="' . (!$first ? 'padding:5px 15px 12px 9px;' : '') . '"><tr><td>'; $html.='<table cellspacing=0 cellpadding=0 border='.($border?"0":"0").' style="border-style:solid;border-width:'.($advanced ? "2" : "0").'px;border-color:999999;">'; if(count($object_var_names)==0 && count($object_methods)==0) { $html.="<tr><td bgcolor=\"FFFFFF\" valign=top align=right style=\"font-size:".($advanced ? "10pt" : "8pt").";padding:2px;\"> ( empty ) </td></tr>"; }; if ($object) { $parent = get_parent_class($object); $html.="<tr><td class=\"cell\" colspan=\"3\" bgcolor=\"999999\" valign=top align=left style=\"border-width:3px 3px 1px 3px;color:FFFFFF;font-size:".($advanced ? "10pt" : "8pt").";padding:2px;\"> " . "<b>" . get_class($object) . "</b>" . ($parent != "" ? " extends <b>" . $parent . "</b>" : "") . " </td></tr>"; }; // end if for ($a = 0; $a < count($object_var_names) ; $a++) { global $rprint_track; $html.='<tr>'; //$bgcolor=($border?($a%2?"EEEEEE":"FFFFFF"):($a%2?"EEEEFF":"CCCCFF")); $var=$object_vars[$object_var_names[$a]]; switch(strtolower(gettype($var))) { case "array": $bgcolor="DDDDFF"; $line_bgcolor="AAAACC"; break; case "boolean": $bgcolor="FFFFCC"; $line_bgcolor="CCCC99"; break; case "string": $bgcolor="FFDD99"; $line_bgcolor="CCAA66"; break; case "object": $bgcolor="FFCCFF"; $line_bgcolor="CC99CC"; break; case "integer": $bgcolor="CCFFFF"; $line_bgcolor="AAAACC"; break; case "double": $bgcolor="99EEEE"; $line_bgcolor="66BBBB"; break; case "resource": $bgcolor="CC99CC"; $line_bgcolor="996699"; break; case "unknown type": $bgcolor="FFCCCC"; $line_bgcolor="CC9999"; break; case "null": $bgcolor="EEEEEE"; $line_bgcolor="BBBBBB"; break; default: $bgcolor="FFFFFF"; $line_bgcolor="000000"; break; }; if (!$advanced) { $bgcolor="FFFFFF"; }; // end if $sub = ""; if (gettype($var) == "array" || gettype($var) == "object") { $sub .= " subobject"; }; // end if if ($a==0) { $sub .= " topobject"; }; // end if if ($a==count($object_var_names)-1) { $sub .= " bottomobject"; }; // end if if ($object_var_names[$a] !== "ZqQ5ya") { $html.="<td width=\"0%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top align=".($advanced ? "right" : "left")." style=\"".(!$advanced ? "border-style:solid;border-color:FFFFFF FFFFFF FFFFFF ".$line_bgcolor.";border-width:3px 0px 3px 8px;" : "border-left-width:3px;")."font-size:".($advanced ? "10pt" : "8pt").";\"><nobr> <span style=\"".($advanced ? '' : 'font-size:10pt;').'font-weight:bold;">'.$object_var_names[$a]."</span> </nobr>".($advanced ?"</td>":""); }; // end if $html.=($advanced ? "<td width=\"0%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top align=center style=\"font-size:".($advanced ? "8pt" : "8pt").";\"><nobr> " : "").($advanced ? "" : "(").(gettype($var)=="object" ? (get_class($var) != "stdClass" ? get_class($var). " " : "") : "") . gettype($var).($advanced ? "" : ")")." </nobr>".($advanced ? "</td>" :""); $html.=($advanced ? "<td width=\"100%\" bgcolor=\"".$bgcolor."\" class=\"cell".$sub."\" valign=top style=\"font-size:".($advanced ? "10pt" : "8pt").";\">" : (gettype($var) != "array" && gettype($var) != "object" ? "=" : "")); switch(gettype($var)) { case "array": $rprint_track[$the_level] = (object) NULL; if ($the_level > 0) { $rprint_track[$the_level-1]->arrays++; }; // end if $subobject = rprint($var,$expanded,$advanced,($border?FALSE:TRUE),FALSE,$level+1); $divid++; $html.=' <a id="debug_link_'.$divid.'" href="javascript:expand(\'debug_div_'.$divid.'\',\'debug_link_'.$divid.'\');">'.($expanded ? $hide_string : $view_string).'</a>' . ($advanced ? ' ' . count($var) . ' elements ' . ($rprint_track[$the_level]->strings > 0 ? ' ' . $rprint_track[$the_level]->strings . ' string' . ($rprint_track[$the_level]->strings > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->booleans > 0 ? ' ' . $rprint_track[$the_level]->booleans . ' boolean' . ($rprint_track[$the_level]->booleans > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->arrays > 0 ? ' ' . $rprint_track[$the_level]->arrays . ' array' . ($rprint_track[$the_level]->arrays > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->integers > 0 ? ' ' . $rprint_track[$the_level]->integers . ' integer' . ($rprint_track[$the_level]->integers > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->doubles > 0 ? ' ' . $rprint_track[$the_level]->doubles . ' double' . ($rprint_track[$the_level]->doubles > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->resources > 0 ? ' ' . $rprint_track[$the_level]->resources . ' resource' . ($rprint_track[$the_level]->resources > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->unknowns > 0 ? ' ' . $rprint_track[$the_level]->unknowns . ' unknown' . ($rprint_track[$the_level]->unknowns > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->nulls > 0 ? ' ' . $rprint_track[$the_level]->nulls . ' null' . ($rprint_track[$the_level]->nulls > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->objects > 0 ? ' ' . $rprint_track[$the_level]->objects . ' object' . ($rprint_track[$the_level]->objects > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->constructors > 0 ? ' ' . $rprint_track[$the_level]->constructors . ' constructor' . ($rprint_track[$the_level]->constructors > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->methods > 0 ? ' ' . $rprint_track[$the_level]->methods . ' method' . ($rprint_track[$the_level]->methods > 1 ? 's' : '') : '' ) . ' ' : ''); $html.='</td><tr><td class="cell" bgcolor="'.$bgcolor.'" colspan="3" id="debug_div_'.$divid.'" style="display:'.($expanded?'inline':'none').';padding-left:'.($advanced ? '15' : '20').'px;border-top-width:2px;border-left-width:3px;">'; $html.=$subobject; break; case "boolean": if ($the_level > 0) { $rprint_track[$the_level-1]->booleans++; }; // end if $html.="<nobr> "; $html.=($var==TRUE?"TRUE":"FALSE"); $html.=" </nobr>"; break; case "string": if ($the_level > 0) { $rprint_track[$the_level-1]->strings++; }; // end if /* if (preg_match("/password/",$object_var_names[$a])) { $var=str_repeat("*",strlen($var)); }; // end if */ $html.=" <nobr>".nl2br(htmlspecialchars($var))."</nobr> "; break; case "object": $rprint_track[$the_level] = (object) NULL; if ($the_level > 0) { $rprint_track[$the_level-1]->objects++; }; // end if $sub_object = rprint($var,$expanded,$advanced,($border?FALSE:TRUE),FALSE,$the_level+1); $divid++; $html.=' <a id="debug_link_'.$divid.'" href="javascript:expand(\'debug_div_'.$divid.'\',\'debug_link_'.$divid.'\');">'.($expanded ? $hide_string : $view_string).'</a>' . ($advanced ? '  ' . ($rprint_track[$the_level]->strings > 0 ? ' ' . $rprint_track[$the_level]->strings . ' string' . ($rprint_track[$the_level]->strings > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->booleans > 0 ? ' ' . $rprint_track[$the_level]->booleans . ' boolean' . ($rprint_track[$the_level]->booleans > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->arrays > 0 ? ' ' . $rprint_track[$the_level]->arrays . ' array' . ($rprint_track[$the_level]->arrays > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->integers > 0 ? ' ' . $rprint_track[$the_level]->integers . ' integer' . ($rprint_track[$the_level]->integers > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->doubles > 0 ? ' ' . $rprint_track[$the_level]->doubles . ' double' . ($rprint_track[$the_level]->doubles > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->resources > 0 ? ' ' . $rprint_track[$the_level]->resources . ' resource' . ($rprint_track[$the_level]->resources > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->unknowns > 0 ? ' ' . $rprint_track[$the_level]->unknowns . ' unknown' . ($rprint_track[$the_level]->unknowns > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->nulls > 0 ? ' ' . $rprint_track[$the_level]->nulls . ' null' . ($rprint_track[$the_level]->nulls > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->objects > 0 ? ' ' . $rprint_track[$the_level]->objects . ' object' . ($rprint_track[$the_level]->objects > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->constructors > 0 ? ' ' . $rprint_track[$the_level]->constructors . ' constructor' . ($rprint_track[$the_level]->constructors > 1 ? 's' : '') : '' ) . ($rprint_track[$the_level]->methods > 0 ? ' ' . $rprint_track[$the_level]->methods . ' method' . ($rprint_track[$the_level]->methods > 1 ? 's' : '') : '' ) . ' ' : ''); $html.='</td><tr><td class="cell" bgcolor="'.$bgcolor.'" colspan="3" id="debug_div_'.$divid.'" style="display:'.($expanded?'inline':'none').';padding-left:15px;border-top-width:2px;border-left-width:3px;">'; $html.=$sub_object; break; case "integer": if ($the_level > 0) { $rprint_track[$the_level-1]->integers++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "double": if ($the_level > 0) { $rprint_track[$the_level-1]->doubles++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "resource": if ($the_level > 0) { $rprint_track[$the_level-1]->resources++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "unknown type": if ($the_level > 0) { $rprint_track[$the_level-1]->unknowns++; }; // end if $html.="<nobr> "; $html.=htmlspecialchars($var); $html.=" </nobr>"; break; case "NULL": if ($the_level > 0) { $rprint_track[$the_level-1]->nulls++; }; // end if $html.="<nobr> "; $html.=" </nobr>"; break; }; $html.="</td>"; $html.='</tr>'."\n"; }; // end for loop $object_name=get_class($object); if ($the_level > 0) { $rprint_track[$the_level-1]->methods=count($object_methods); }; // end if for ($a = 0; $a < count($object_methods) ; $a++) { $bgcolor="99FF99"; $line_bgcolor = "66CC66"; $type="method"; if($object_name==$object_methods[$a]) { $bgcolor="00FF00"; $line_bgcolor = "00CC00"; $type="constructor"; if ($the_level > 0) { $rprint_track[$the_level-1]->constructors++; $rprint_track[$the_level-1]->methods--; }; // end if }; // end if if (!$advanced) { $bgcolor = "FFFFFF"; }; // end if $html.='<tr>'; $html.="<td width=\"0%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=".($advanced ? "right" : "left")." style=\"".(!$advanced ? "border-style:solid;border-color:FFFFFF FFFFFF FFFFFF ".$line_bgcolor.";border-width:3px 0px 3px 8px;" : "border-left-width:3px;")."font-weight:bold;font-size:".($advanced ? "10pt" : "8pt").";\"><nobr> ".$object_methods[$a]." </nobr>".($advanced ? "</td>" : ""); $html.=($advanced ? "<td width=\"0%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=center style=\"font-size:".($advanced ? "10pt" : "8pt").";\">":"")."<nobr>".($advanced ? " " : "(").$type.($advanced ? "" : ")")." </nobr>".($advanced ? "</td>" : ""); $html.=($advanced ? "<td width=\"100%\" class=\"cell\" bgcolor=\"".$bgcolor."\" valign=top align=left style=\"font-size:".($advanced ? "10pt" : "8pt").";\">":"")."<nobr> "; $html.=' </nobr></td>'; $html.='</tr>'; }; $html.='</table>'; $html.='</td></tr></table>'; if ($level == 0) { echo $html; }; // end if return $html; }; // end function ?>