public function var_dump($value, $name = null)
{
$traces = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
$caller = isset($traces[1]) && $traces[1]['object'] instanceof $this ? $traces[1] : $traces[0];
if ($name === null) {
$lines = file($caller['file']);
$str = $lines[$caller['line'] - 1];
$match = null;
if (preg_match('#->var_dump\\((.*)\\)\\s*;#', $str, $match) === 1) {
$name = $match[1];
}
}
$this->_dump[] = ['name' => $name, 'value' => $value, 'file' => str_replace('\\', '/', $caller['file']), 'line' => $caller['line'], 'base_name' => basename($caller['file'])];
return $this;
}