Сделать var дамп выглядеть красиво
у меня простой $_GET[]
query var set для отображения тестовых данных при вытягивании запросов из БД.
<?php if($_GET['test']): ?>
<div id="test" style="padding: 24px; background: #fff; text-align: center;">
<table>
<tr style="font-weight: bold;"><td>MLS</td></tr>
<tr><td><?php echo KEY; ?></td></tr>
<tr style="font-weight: bold;"><td>QUERY</td></tr>
<tr><td><?php echo $data_q; ?></td></tr>
<tr style="font-weight: bold;"><td>DATA</td></tr>
<tr><td><?php var_dump($data); ?></td></tr>
</table>
</div>
<?php endif; ?>
когда я делаю var_dump
, как и ожидалось, это большая строка массива, которая все сминается вместе. Есть ли способ добавить разрывы строк хотя бы для этого или отобразить var_dump
таким образом, что это более читабельным? Я открыт для предложений jQuery по манипулированию строкой после ее публикации.
12 ответов:
мне очень нравится
var_export()
. Если вам нравится копировать / вставлять код, попробуйте:echo '<pre>' . var_export($data, true) . '</pre>';
или даже что-то вроде этого для подсветки синтаксиса цвета:
highlight_string("<?php\n$data =\n" . var_export($data, true) . ";\n?>");
попробовать xdebug расширение для php.
пример:
<?php var_dump($_SERVER); ?>
выходы:
использовать предварительно отформатированный HTML код
echo '<pre>'; var_dump($data); echo '</pre>';
Я сделал дополнение к ответам @AbraCadaver. Я включил скрипт javascript, который удалит начальный и закрывающий тег php. У нас будет чистая более симпатичная свалка.
может быть кто-то вроде этого тоже.
function dd($data){ highlight_string("<?php\n " . var_export($data, true) . "?>"); echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>'; die(); }
результат:
Результат:
теперь у нас нет PHP запуска и закрытия тега
лучший и самый простой способ получить хороший var_dump-это использовать xDebug (должен быть для любого PHP dev) Способ установки Debian
в консоли:
apt-get install php-xdebug
после этого вы должны открыть php.ini (зависит от того, какой стек вы используете) для него /etc/php/7.0/fpm/php.iniискать
display_errors
настройка же ->
display_errors = On
Регистрация
html_errors
в этом файле немного ниже, это также должно бытьOn
сохранить и выйти
после открытия
/etc/php/7.0/fpm/conf.d/20-xdebug.ini
и добавить в конце: `` xdebug.cli_color=1
"` Сохранить и выйти.
здесь можно найти много других доступных опций и документации для xdebug.
удачи и получайте удовольствие !!!
вот моя функция, чтобы иметь довольно var_dump. В сочетании с Xdebug, Это очень помогает иметь лучшее представление о том, что мы сбрасываем.
Я немного улучшил отображение Xdebug (дайте некоторое пространство вокруг, разделитель между значениями, оберните длинные переменные и т. д.).
когда вы вызываете функцию, вы можете установить заголовок, фон, цвет текста, чтобы отличить все ваши var_dump на странице.
или нет ;)
/** * Pretty var_dump * Possibility to set a title, a background-color and a text color */ function dump($data, $title="", $background="#EEEEEE", $color="#000000"){ //=== Style echo " <style> /* Styling pre tag */ pre { padding:10px 20px; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; } /* =========================== == To use with XDEBUG =========================== */ /* Source file */ pre small:nth-child(1) { font-weight: bold; font-size: 14px; color: #CC0000; } pre small:nth-child(1)::after { content: ''; position: relative; width: 100%; height: 20px; left: 0; display: block; clear: both; } /* Separator */ pre i::after{ content: ''; position: relative; width: 100%; height: 15px; left: 0; display: block; clear: both; border-bottom: 1px solid grey; } </style> "; //=== Content echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>"; echo "<h2>$title</h2>"; var_dump($data); echo "</pre>"; }
Если это "все смяты вместе "вы часто можете дать ol'" просмотр исходного кода " попробовать. Иногда дампы, сообщения и исключения кажутся просто одной длинной строкой, когда оказывается, что разрывы строк просто не отображаются. Особенно XML-деревьев.
кроме того, я когда-то создал небольшой инструмент под названием InteractiveVarDump для этой цели. Это, конечно, имеет свои пределы, но это также может быть очень удобно иногда. Даже если он был разработан с PHP 5 в виду.
Не совсем
var_dump
, но полезно:http://dbug.ospinto.com/
Я написал функцию (
debug_display
), который может печатать, массивы, объекты и информацию о файле в красивом виде.<?php function debug_display($var,$show = false) { if($show) { $dis = 'block'; }else { $dis = 'none'; } ob_start(); echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b> <pre>'; if(is_bool($var)) { echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)'; }else { if(FALSE == empty($var) && $var !== NULL && $var != '0') { if(is_array($var)) { echo "Number of Indexes: " . count($var) . "\n"; print_r($var); } elseif(is_object($var)) { print_r($var); } elseif(@is_file($var)){ $stat = stat($var); $perm = substr(sprintf('%o',$stat['mode']), -4); $accesstime = gmdate('Y/m/d H:i:s', $stat['atime']); $modification = gmdate('Y/m/d H:i:s', $stat['mtime']); $change = gmdate('Y/m/d H:i:s', $stat['ctime']); echo " file path : $var file size : {$stat['size']} Byte device number : {$stat['dev']} permission : {$perm} last access time was : {$accesstime} last modified time was : {$modification} last change time was : {$change} "; }elseif(is_string($var)) { print_r(htmlentities(str_replace("\t", ' ', $var))); } else { print_r($var); } }else { echo 'Undefined'; } } echo '</pre> </div>'; $output = ob_get_contents(); ob_end_clean(); echo $output; unset($output); }