// /** * Static class used in common types internals. * * @static * @author Laurent Bedubourg */ class Types { /** * Generate a string representation of specified variable. * * @param mixed $var -- variable to represent in a string form. * @static */ function toString(&$var) { if (is_object($var)) { return Types::_objToString($var); } elseif (is_array($var)) { if (array_key_exists(0, $var) || count($var) == 0) { return Types::_arrayToString($var); } else { return Types::_hashToString($var); } } elseif (is_resource($var)) { return '#'.gettype($var).'#'; } return $var; } /** * Generate a string representation of an object calling its toString * method of using its class name. * * @access protected * @static */ function _objToString(&$var) { if (method_exists($var, "toString")) { return $var->toString(); } else { return '<' . get_class($var) . ' instance>'; } } /** * Generate a string representation of a php array. * * @access protected * @static */ function _arrayToString(&$var) { $values = array(); foreach ($var as $val) { $values[] = Types::toString($val); } return '[' . join(', ', $values) . ']'; } /** * Generate a string representation of an associative array. * * @access protected * @static */ function _hashToString(&$var) { $values = array(); foreach ($var as $key=>$val) { $values[] = '\''. $key . '\': ' . Types::toString($val); } return '{' . join(', ', $values) . '}'; } } ?>