Mam prosty $_GET[]
zestaw zmiennych zapytań do wyświetlania danych testowych podczas ściągania zapytań z bazy danych.
<?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; ?>
Kiedy to robię var_dump
, zgodnie z oczekiwaniami, jest to ten duży ciąg tablicowy, który jest zgnieciony. Czy istnieje sposób, aby przynajmniej w tym celu dodać podziały wierszy lub wyświetlić var_dump
bardziej czytelny sposób? Jestem otwarty na sugestie jQuery dotyczące manipulowania ciągiem znaków po jego opublikowaniu.
echo '<pre>'; var_dump($data); echo '</pre>'
.print_r($data)
. php.net/manual/en/function.print-r.phpOdpowiedzi:
Naprawdę kocham
var_export()
. Jeśli podoba Ci się kod, który można kopiować / wklejać, spróbuj:echo '<pre>' . var_export($data, true) . '</pre>';
Lub nawet coś takiego do podświetlania składni kolorów:
highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
Możesz zrobić to samo z
print_r()
. Navar_dump()
to po prostu trzeba dodać<pre>
tagi:echo '<pre>'; var_dump($data); echo '</pre>';
źródło
echo
,var_export
ihighlight_string
są funkcjami php i muszą znajdować się wewnątrz<?php
?>
bloku. Tak, mimo że linia funkcji highlight_string ma wewnątrz parę <? Php?>, Para jest potrzebna również na zewnątrz.var_dump(highlight_string("<?\n". var_export($data, true)));
Wypróbuj rozszerzenie xdebug dla php.
Przykład:
<?php var_dump($_SERVER); ?>
Wyjścia:
źródło
extension=php_xdebug.dll
zend_extension=/some/really/long/specific/path/xdebug.so
Użyj wstępnie sformatowanego elementu HTML
echo '<pre>'; var_dump($data); echo '</pre>';
źródło
Dodałem do odpowiedzi @AbraCadaver. Dołączyłem skrypt javascript, który usunie początkowy i zamykający tag php. Będziemy mieć czysty ładniejszy wysypisko.
Może to też być ktoś taki.
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(); }
Wynik przed:
Wynik po:
Teraz nie mamy tagu początkowego i zamykającego php
źródło
Jeśli jest to „wszystko zmiażdżone”, często możesz spróbować starego „widoku kodu źródłowego”. Czasami zrzuty, komunikaty i wyjątki wydają się być tylko jednym długim ciągiem, gdy okazuje się, że podziały wiersza po prostu się nie pokazują. Szczególnie drzewa XML.
Alternatywnie, stworzyłem kiedyś małe narzędzie o nazwie InteractiveVarDump właśnie w tym celu. Z pewnością ma swoje ograniczenia, ale czasami bywa bardzo wygodny. Mimo że został zaprojektowany z myślą o PHP 5.
źródło
Wydaje się, że nie mam wystarczającej liczby powtórzeń, aby zamknąć to jako duplikat, ale jest to jedno, jeśli ktoś inny może to zrobić. Opublikowałem to samo na Bardziej ładna / pouczająca alternatywa Var_dump w PHP? ale ze względu na oszczędność czasu również tutaj skopiuję / wkleję:
Musiałem tutaj dodać kolejną odpowiedź, ponieważ tak naprawdę nie chciałem przechodzić przez kroki w innych rozwiązaniach. Jest niezwykle prosty i nie wymaga żadnych rozszerzeń, zawiera itp. I jest tym, co wolę. Jest to bardzo łatwe i bardzo szybkie.
Najpierw po prostu json_encode odpowiednią zmienną:
echo json_encode($theResult);
Skopiuj otrzymany wynik do edytora JSON pod adresem http://jsoneditoronline.org/, po prostu skopiuj go do lewego panelu bocznego, kliknij Kopiuj> i ładnie drukuje JSON w naprawdę ładnym formacie drzewa.
Dla każdego z nich, ale miejmy nadzieję, że pomoże to niektórym innym mieć jeszcze jedną fajną opcję! :)
źródło
Najlepszym i najłatwiejszym sposobem na uzyskanie ładnego var_dump jest użycie xDebug (obowiązkowe dla każdego programisty php).
W konsoli:
apt-get install php-xdebug
po tym powinieneś otworzyć php.ini (w zależności od używanego stosu), aby uzyskać jego /etc/php/7.0/fpm/php.iniSzukaj
display_errors
ustaw to samo ->
display_errors = On
Wpisz ten
html_errors
sam plik trochę poniżej, tak też musi byćOn
Zapisz i wyjdź
Po otwarciu
/etc/php/7.0/fpm/conf.d/20-xdebug.ini
I na końcu dodaj: `` xdebug.cli_color = 1
`` Zapisz i wyjdź.
Wiele innych dostępnych opcji i dokumentacji dla xdebug można znaleźć tutaj.
https://xdebug.org/docs/
Powodzenia i miłej zabawy !!!
Wynik
źródło
Możesz użyć tego
debugVar()
zamiastvar_dump()
Sprawdź: https://github.com/E1NSER/php-debug-function
źródło
Oto moja funkcja, aby mieć ładny var_dump. W połączeniu z Xdebug bardzo pomaga mieć lepszy wgląd w to, co wyrzucamy .
Poprawiłem nieco wyświetlanie Xdebug (zostaw trochę spacji, separator między wartościami, zawijaj długie zmienne itp.).
Kiedy wywołujesz tę funkcję, możesz ustawić tytuł, tło i kolor tekstu, aby odróżnić cały zrzut var_dump na stronie.
Albo nie ;)
/** * 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>"; }
źródło
function var_view($var) { ini_set("highlight.keyword", "#a50000; font-weight: bolder"); ini_set("highlight.string", "#5825b6; font-weight: lighter; "); ob_start(); highlight_string("<?php\n" . var_export($var, true) . "?>"); $highlighted_output = ob_get_clean(); $highlighted_output = str_replace( ["<?php","?>"] , '', $highlighted_output ); echo $highlighted_output; die(); }
źródło
Oto alternatywne, aktywnie utrzymywane oprogramowanie open source
var_dump
dotyczące sterydów:https://github.com/kint-php/kint
Działa przy zerowej konfiguracji i ma więcej funkcji niż var_dump Xdebuga.
Przykład, który omija limit rozmiaru porzuconych obiektów w locie z Kint:
require 'kint.phar'; +d( $variable ); // append `+` to the dump call
Oto zrzut ekranu:
źródło
Jest do tego pakiet Symfony: https://symfony.com/doc/current/components/var_dumper.html .
źródło
Napisałem funkcję (
debug_display
), która może w ładny sposób drukować tablice, obiekty i informacje o plikach.<?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); }
źródło
Posługiwać się
echo nl2br(var_dump());
To powinno działać ^^
źródło