/** * Dump implementation for JSON. * @param mixed variable to dump * @param int current recursion level * @return string */ private function jsonDump(&$var, $level = 0) { if (is_bool($var) || is_null($var) || is_int($var) || is_float($var)) { return $var; } elseif (is_string($var)) { return Dumper::encodeString($var, $this->maxLength); } elseif (is_array($var)) { static $marker; if ($marker === NULL) { $marker = uniqid("", TRUE); } if (isset($var[$marker])) { return "…RECURSION…"; } elseif ($level < $this->maxDepth || !$this->maxDepth) { $var[$marker] = TRUE; $res = array(); foreach ($var as $k => &$v) { if ($k !== $marker) { $res[$this->jsonDump($k)] = $this->jsonDump($v, $level + 1); } } unset($var[$marker]); return $res; } else { return " … "; } } elseif (is_object($var)) { $arr = (array) $var; static $list = array(); if (in_array($var, $list, TRUE)) { return "…RECURSION…"; } elseif ($level < $this->maxDepth || !$this->maxDepth) { $list[] = $var; $res = array("" => '(object) ' . get_class($var)); foreach ($arr as $k => &$v) { if ($k[0] === "") { $k = substr($k, strrpos($k, "") + 1); } $res[$this->jsonDump($k)] = $this->jsonDump($v, $level + 1); } array_pop($list); return $res; } else { return " … "; } } elseif (is_resource($var)) { return 'resource ' . get_resource_type($var); } else { return 'unknown type'; } }