2000 ? substr($value, 0, 2000) . '...' : $value;
if ($plainText) {
$dump = self::ansiEscapeWrap('"' . implode(PHP_EOL . str_repeat(self::PLAINTEXT_INDENT, $level + 1), str_split($croppedValue, 76)) . '"', '33', $ansiColors) . ' (' . strlen($value) . ' chars)';
} else {
$lines = str_split($croppedValue, 76);
$lines = array_map('htmlspecialchars', $lines);
$dump = sprintf('\'%s\' (%s chars)', implode('
' . str_repeat(self::HTML_INDENT, $level + 1), $lines), strlen($value));
}
} elseif (is_numeric($value)) {
$dump = sprintf('%s (%s)', self::ansiEscapeWrap($value, '35', $ansiColors), gettype($value));
} elseif (is_bool($value)) {
$dump = $value ? self::ansiEscapeWrap('TRUE', '32', $ansiColors) : self::ansiEscapeWrap('FALSE', '32', $ansiColors);
} elseif ($value === null || is_resource($value)) {
$dump = gettype($value);
} elseif (is_array($value)) {
$dump = self::renderArray($value, $level + 1, $plainText, $ansiColors);
} elseif (is_object($value)) {
if ($value instanceof \Closure) {
$dump = self::renderClosure($value, $level + 1, $plainText, $ansiColors);
} else {
$dump = self::renderObject($value, $level + 1, $plainText, $ansiColors);
}
}
return $dump;
}
/**
* Renders a dump of the given array
*
* @param array|\Traversable $array
* @param int $level
* @param bool $plainText
* @param bool $ansiColors
* @return string
*/
protected static function renderArray($array, $level, $plainText = false, $ansiColors = false)
{
$content = '';
$count = count($array);
if ($plainText) {
$header = self::ansiEscapeWrap('array', '36', $ansiColors);
} else {
$header = 'array';
}
$header .= $count > 0 ? '(' . $count . ' item' . ($count > 1 ? 's' : '') . ')' : '(empty)';
if ($level >= self::$maxDepth) {
if ($plainText) {
$header .= ' ' . self::ansiEscapeWrap('max depth', '47;30', $ansiColors);
} else {
$header .= 'max depth';
}
} else {
$content = self::renderCollection($array, $level, $plainText, $ansiColors);
if (!$plainText) {
$header = ($level > 1 && $count > 0 ? '