Как я могу установить стиль var_dump()
функция и PHP ошибки стиля, как на следующем изображении?
На данный момент у меня есть следующий вид var_dump()
(с <pre>var_dump(...)</pre>
без него все будет в одну строку) и просто текст на ошибки.
Я искал что-то для цветных ошибок PHP, var_dump
стили, но ничего не смог найти.
Я использовал OpenServer в качестве локального, и в предыдущей версии у меня были те же стили для ошибок, но теперь просто текст. Это реально настроить?
Вы получаете цветной вывод при установке и включении Xdebug:
Xdebug заменяет PHP
var_dump()
функция для отображения переменных. Версия Xdebug включает разные цвета для разных типов и накладывает ограничения на количество элементов массива / свойств объекта, максимальную глубину и длину строки. Есть еще несколько функций, связанных с отображением переменных.
Вы можете включить / отключить это с настройкой INI xdebug.overload_var_dump
По умолчанию перегрузки Xdebug
var_dump()
с собственной улучшенной версией для отображения переменных, когда для параметра html_errors php.ini установлено значение 1. Если вы не хотите этого, вы можете установить этот параметр на 0, но сначала проверьте, не умнее ли отключить html_errors.
Проверьте документацию для получения дополнительной информации.
Обратите внимание, что вы не хотите, чтобы на рабочем сервере было установлено расширение Xdebug, так как это значительно замедлит выполнение кода.
Попробуйте эту функцию .. … переопределить var_dump()
или использовать в качестве другой именованной функции. Я использую его годами, даже не помню, откуда он появился.
function var_dump($data, $label='', $return = false) {
$debug = debug_backtrace();
$callingFile = $debug[0]['file'];
$callingFileLine = $debug[0]['line'];
ob_start();
var_dump($data);
$c = ob_get_contents();
ob_end_clean();
$c = preg_replace("/\r\n|\r/", "\n", $c);
$c = str_replace("]=>\n", '] = ', $c);
$c = preg_replace('/= {2,}/', '= ', $c);
$c = preg_replace("/\[\"(.*?)\"\] = /i", "[$1] = ", $c);
$c = preg_replace('/ /', " ", $c);
$c = preg_replace("/\"\"(.*?)\"/i", "\"$1\"", $c);
$c = preg_replace("/(int|float)\(([0-9\.]+)\)/i", "$1() <span class=\"number\">$2</span>", $c);
// Syntax Highlighting of Strings. This seems cryptic, but it will also allow non-terminated strings to get parsed.
$c = preg_replace("/(\[[\w ]+\] = string\([0-9]+\) )\"(.*?)/sim", "$1<span class=\"string\">\"", $c);
$c = preg_replace("/(\"\n{1,})( {0,}\})/sim", "$1</span>$2", $c);
$c = preg_replace("/(\"\n{1,})( {0,}\[)/sim", "$1</span>$2", $c);
$c = preg_replace("/(string\([0-9]+\) )\"(.*?)\"\n/sim", "$1<span class=\"string\">\"$2\"</span>\n", $c);
$regex = array(
// Numberrs
'numbers' => array('/(^|] = )(array|float|int|string|resource|object\(.*\)|\&object\(.*\))\(([0-9\.]+)\)/i', '$1$2(<span class="number">$3</span>)'),
// Keywords
'null' => array('/(^|] = )(null)/i', '$1<span class="keyword">$2</span>'),
'bool' => array('/(bool)\((true|false)\)/i', '$1(<span class="keyword">$2</span>)'),
// Types
'types' => array('/(of type )\((.*)\)/i', '$1(<span class="type">$2</span>)'),
// Objects
'object' => array('/(object|\&object)\(([\w]+)\)/i', '$1(<span class="object">$2</span>)'),
// Function
'function' => array('/(^|] = )(array|string|int|float|bool|resource|object|\&object)\(/i', '$1<span class="function">$2</span>('),
);
foreach ($regex as $x) {
$c = preg_replace($x[0], $x[1], $c);
}
$style = '
/* outside div - it will float and match the screen */
.dumpr {
margin: 2px;
padding: 2px;
background-color: #fbfbfb;
float: left;
clear: both;
}
/* font size and family */
.dumpr pre {
color: #000000;
font-size: 9pt;
font-family: "Courier New",Courier,Monaco,monospace;
margin: 0px;
padding-top: 5px;
padding-bottom: 7px;
padding-left: 9px;
padding-right: 9px;
}
/* inside div */
.dumpr div {
background-color: #fcfcfc;
border: 1px solid #d9d9d9;
float: left;
clear: both;
}
/* syntax highlighting */
.dumpr span.string {color: #c40000;}
.dumpr span.number {color: #ff0000;}
.dumpr span.keyword {color: #007200;}
.dumpr span.function {color: #0000c4;}
.dumpr span.object {color: #ac00ac;}
.dumpr span.type {color: #0072c4;}
';
$style = preg_replace("/ {2,}/", "", $style);
$style = preg_replace("/\t|\r\n|\r|\n/", "", $style);
$style = preg_replace("/\/\*.*?\*\//i", '', $style);
$style = str_replace('}', '} ', $style);
$style = str_replace(' {', '{', $style);
$style = trim($style);
$c = trim($c);
$c = preg_replace("/\n<\/span>/", "</span>\n", $c);
if ($label == ''){
$line1 = '';
} else {
$line1 = "<strong>$label</strong> \n";
}
$out = "\n<!-- Dumpr Begin -->\n".
"<style type=\"text/css\">".$style."</style>\n".
"<div class=\"dumpr\">
<div><pre>$line1 $callingFile : $callingFileLine \n$c\n</pre></div></div><div style=\"clear:both;\"> </div>".
"\n<!-- Dumpr End -->\n";
if($return) {
return $out;
} else {
echo $out;
}
}
Вы также можете использовать это расширение для цветной отладки: (это очень легко установить)
http://www.sitepoint.com/var_dump-introducing-symfony-vardumper/
Symfony VarDumper — это компонент, разработанный для замены ваших var_dumps. По сути, он выполняет те же функции, но предоставляет вам гораздо больше информации в гораздо более привлекательном формате. Это var_dump, который вы всегда хотели.
Xdebug это то, что вы ищете.
Примеры скриптов для установки в Ubuntu:
$ apt-cache search xdebug
[Установить Xdebug]
$ sudo apt-get install php-xdebug
[Перезапустите Apache, чтобы он заработал]
$ sudo /etc/init.d/apache2 restart