function var_dump_internal(Executor $executor, Zval $arg, $indent = '') { if ($arg->getValue() instanceof FunctionData) { return ''; } $output = $indent; switch ($arg->getType()) { case 'NULL': $output .= 'NULL'; break; case 'string': $length = strlen($arg->getValue()); $output .= 'string(' . $length . ') "' . $arg->getValue() . '"'; break; case 'integer': $output .= 'int(' . $arg->getValue() . ')'; break; case 'double': $output .= 'float(' . $arg->getValue() . ')'; break; case 'boolean': $output .= 'bool(' . ($arg->getValue() ? 'true' : 'false') . ')'; break; case 'array': $array = $arg->getArray(); $output .= 'array(' . count($array) . ") {\n"; $newIndent = $indent . ' '; foreach ($array as $key => $value) { if (is_string($key)) { $output .= $newIndent . "[\"{$key}\"]=>\n"; } else { $output .= $newIndent . "[{$key}]=>\n"; } $output .= var_dump_internal($executor, $value, $newIndent); } $output .= $indent . "}"; break; case 'object': $ci = $arg->getValue(); $props = $ci->getProperties(); $output = 'object(' . $ci->getClassEntry()->getName() . ')#' . $ci->getInstanceNumber(); $output .= ' (' . count($props) . ") {\n"; $newIndent = $indent . ' '; foreach ($props as $key => $value) { if (is_string($key)) { $output .= $newIndent . "[\"{$key}\"]=>\n"; } else { $output .= $newIndent . "[{$key}]=>\n"; } $output .= var_dump_internal($executor, $value, $newIndent); } $output .= $indent . "}"; break; } return $output . "\n"; }