Changeset 3532
- Timestamp:
- 10/05/2008 10:45:22 AM (2 months ago)
- Files:
-
- 1 modified
-
trunk/system/classes/kohana.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/system/classes/kohana.php
r3529 r3532 1496 1496 * any variable. 1497 1497 * 1498 * @param mixed variable to dump 1498 * @param mixed variable to dump 1499 * @param boolean internal recursion 1499 1500 * @return string 1500 1501 */ 1501 public static function debug_var($var) 1502 { 1502 public static function debug_var($var, $recursion = FALSE) 1503 { 1504 static $objects; 1505 1506 if ($recursion === FALSE) 1507 { 1508 $objects = array(); 1509 } 1510 1503 1511 switch (gettype($var)) 1504 1512 { 1505 1513 case 'object': 1514 // Unique hash of the object 1515 $hash = spl_object_hash($var); 1516 1506 1517 $object = new ReflectionObject($var); 1507 1518 $more = FALSE; 1508 1519 $out = 'object '.$object->getName().' { '; 1509 foreach ($object->getProperties() as $property) 1510 { 1511 if ($property->isPublic()) 1520 1521 if ($recursion === TRUE AND in_array($hash, $objects)) 1522 { 1523 $out .= '*RECURSION*'; 1524 } 1525 else 1526 { 1527 // Add the hash to the objects, to detect later recursion 1528 $objects[] = $hash; 1529 1530 foreach ($object->getProperties() as $property) 1512 1531 { 1513 $out .= ($more === TRUE ? ', ' : '').$property->getName().' => '.self::debug_var($property->getValue($var)); 1532 $out .= ($more === TRUE ? ', ' : '').$property->getName().' => '; 1533 if ($property->isPublic()) 1534 { 1535 $out .= self::debug_var($property->getValue($var), TRUE); 1536 } 1537 elseif ($property->isPrivate()) 1538 { 1539 $out .= '*PRIVATE*'; 1540 } 1541 else 1542 { 1543 $out .= '*PROTECTED*'; 1544 } 1514 1545 $more = TRUE; 1515 1546 } … … 1523 1554 if ( ! is_int($key)) 1524 1555 { 1525 $key = self::debug_var($key ).' => ';1556 $key = self::debug_var($key, TRUE).' => '; 1526 1557 } 1527 1558 else … … 1529 1560 $key = ''; 1530 1561 } 1531 $out .= ($more ? ', ' : '').$key.self::debug_var($val );1562 $out .= ($more ? ', ' : '').$key.self::debug_var($val, TRUE); 1532 1563 $more = TRUE; 1533 1564 } 1534 1565 return $out.')'; 1535 1536 1566 case 'string': 1537 1567 return "'$var'"; 1538 1539 1568 case 'float': 1540 1569 return number_format($var, 6).'…'; 1541 1542 1570 case 'boolean': 1543 1571 return $var === TRUE ? 'TRUE' : 'FALSE'; 1544 1545 1572 default: 1546 1573 return (string) $var;
