modifier.debug_print_var.php (3963B)
1 <?php 2 /** 3 * Smarty plugin 4 * 5 * @package Smarty 6 * @subpackage Debug 7 */ 8 9 /** 10 * Smarty debug_print_var modifier plugin 11 * Type: modifier<br> 12 * Name: debug_print_var<br> 13 * Purpose: formats variable contents for display in the console 14 * 15 * @author Monte Ohrt <monte at ohrt dot com> 16 * 17 * @param array|object $var variable to be formatted 18 * @param int $max maximum recursion depth if $var is an array or object 19 * @param int $length maximum string length if $var is a string 20 * @param int $depth actual recursion depth 21 * @param array $objects processed objects in actual depth to prevent recursive object processing 22 * 23 * @return string 24 */ 25 function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array()) 26 { 27 $_replace = array("\n" => '<i>\n</i>', 28 "\r" => '<i>\r</i>', 29 "\t" => '<i>\t</i>' 30 ); 31 switch (gettype($var)) { 32 case 'array' : 33 $results = '<b>Array (' . count($var) . ')</b>'; 34 if ($depth == $max) { 35 break; 36 } 37 foreach ($var as $curr_key => $curr_val) { 38 $results .= '<br>' . str_repeat(' ', $depth * 2) 39 . '<b>' . strtr($curr_key, $_replace) . '</b> => ' 40 . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); 41 $depth --; 42 } 43 break; 44 45 case 'object' : 46 $object_vars = get_object_vars($var); 47 $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; 48 if (in_array($var, $objects)) { 49 $results .= ' called recursive'; 50 break; 51 } 52 if ($depth == $max) { 53 break; 54 } 55 $objects[] = $var; 56 foreach ($object_vars as $curr_key => $curr_val) { 57 $results .= '<br>' . str_repeat(' ', $depth * 2) 58 . '<b> ->' . strtr($curr_key, $_replace) . '</b> = ' 59 . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); 60 $depth --; 61 } 62 break; 63 64 case 'boolean' : 65 case 'NULL' : 66 case 'resource' : 67 if (true === $var) { 68 $results = 'true'; 69 } elseif (false === $var) { 70 $results = 'false'; 71 } elseif (null === $var) { 72 $results = 'null'; 73 } else { 74 $results = htmlspecialchars((string) $var); 75 } 76 $results = '<i>' . $results . '</i>'; 77 break; 78 79 case 'integer' : 80 case 'float' : 81 $results = htmlspecialchars((string) $var); 82 break; 83 84 case 'string' : 85 $results = strtr($var, $_replace); 86 if (Smarty::$_MBSTRING) { 87 if (mb_strlen($var, Smarty::$_CHARSET) > $length) { 88 $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...'; 89 } 90 } else { 91 if (isset($var[$length])) { 92 $results = substr($var, 0, $length - 3) . '...'; 93 } 94 } 95 96 $results = htmlspecialchars('"' . $results . '"'); 97 break; 98 99 case 'unknown type' : 100 default : 101 $results = strtr((string) $var, $_replace); 102 if (Smarty::$_MBSTRING) { 103 if (mb_strlen($results, Smarty::$_CHARSET) > $length) { 104 $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...'; 105 } 106 } else { 107 if (strlen($results) > $length) { 108 $results = substr($results, 0, $length - 3) . '...'; 109 } 110 } 111 112 $results = htmlspecialchars($results); 113 } 114 115 return $results; 116 }