Цветной var_dump () и ошибки

Как я могу установить стиль var_dump() функция и PHP ошибки стиля, как на следующем изображении?

введите описание изображения здесь

введите описание изображения здесь

На данный момент у меня есть следующий вид var_dump()<pre>var_dump(...)</pre>без него все будет в одну строку) и просто текст на ошибки.

введите описание изображения здесь

Я искал что-то для цветных ошибок PHP, var_dump стили, но ничего не смог найти.

Я использовал OpenServer в качестве локального, и в предыдущей версии у меня были те же стили для ошибок, но теперь просто текст. Это реально настроить?

4

Решение

Вы получаете цветной вывод при установке и включении Xdebug:

Xdebug заменяет PHP var_dump() функция для отображения переменных. Версия Xdebug включает разные цвета для разных типов и накладывает ограничения на количество элементов массива / свойств объекта, максимальную глубину и длину строки. Есть еще несколько функций, связанных с отображением переменных.

Вы можете включить / отключить это с настройкой INI xdebug.overload_var_dump

По умолчанию перегрузки Xdebug var_dump() с собственной улучшенной версией для отображения переменных, когда для параметра html_errors php.ini установлено значение 1. Если вы не хотите этого, вы можете установить этот параметр на 0, но сначала проверьте, не умнее ли отключить html_errors.

Проверьте документацию для получения дополнительной информации.

Обратите внимание, что вы не хотите, чтобы на рабочем сервере было установлено расширение Xdebug, так как это значительно замедлит выполнение кода.

3

Другие решения

Попробуйте эту функцию .. … переопределить 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\(.*\)|\&amp;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|\&amp;object)\(([\w]+)\)/i', '$1(<span class="object">$2</span>)'),
// Function
'function' => array('/(^|] = )(array|string|int|float|bool|resource|object|\&amp;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;\">&nbsp;</div>".
"\n<!-- Dumpr End -->\n";
if($return) {
return $out;
} else {
echo $out;
}
}
6

Вы также можете использовать это расширение для цветной отладки: (это очень легко установить)

http://www.sitepoint.com/var_dump-introducing-symfony-vardumper/

Symfony VarDumper — это компонент, разработанный для замены ваших var_dumps. По сути, он выполняет те же функции, но предоставляет вам гораздо больше информации в гораздо более привлекательном формате. Это var_dump, который вы всегда хотели.

введите описание изображения здесь

1

Xdebug это то, что вы ищете.
Примеры скриптов для установки в Ubuntu:

[Поиск Xdebug]
$ apt-cache search xdebug
[Установить Xdebug]
$ sudo apt-get install php-xdebug
[Перезапустите Apache, чтобы он заработал]
$ sudo /etc/init.d/apache2 restart
1
По вопросам рекламы [email protected]