Более красивая / информативная альтернатива Var_dump в PHP? - PullRequest
131 голосов
/ 26 января 2010

У каждого порядочного программиста PHP есть оболочка print_r или var_dump, которую они используют, любят и назначают сочетания клавиш, почему бы нам не поделиться своими любимыми .

Ответы [ 24 ]

0 голосов
/ 19 мая 2016

TVarDumper

Это отличный инструмент, предназначенный для замены ошибочных функций PHP var_dump и print_r, поскольку он может правильно идентифицировать рекурсивно-ссылочные объекты в сложной структуре объектов. Он также имеет рекурсивный контроль глубины, чтобы избежать неопределенного рекурсивного отображения некоторых специфических переменных.

См .: TVarDumper.php.


Для других альтернативных решений, которые обеспечивают больше преимуществ по сравнению с var_dump и print_r и могут поддерживать циклические ссылки, проверьте: Использование print_r и var_dump с циклической ссылкой .


Для получения дополнительных идей, проверьте также: Как вы отлаживаете PHP-скрипты?

0 голосов
/ 08 июля 2013

PHP Array Beautifier Этот простой инструмент принимает массив или объектный вывод в PHP, такой как оператор print_r (), и форматирует его в цветовой кодировке, чтобы легко прочитать ваши данные. http://phillihp.com/toolz/php-array-beautifier/

0 голосов
/ 16 сентября 2018

Мой, проще, для меня у меня мало знаний / времени, чтобы изменить инфраструктуру, установить xdebug и т. Д. И т. Д.

А в других случаях вам не нужно много для простого WP сайта, например

Поэтому я использую:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

это мне очень помогает.

но поскольку я предпочитаю среду DevConsole, я использую эту удивительную, но простую функцию:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

Маленький твик:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)
{
     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     {
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     }
     else
     {
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     }

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = {};
console.log = console.log || function(name, data){};
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
} # end logConsole
0 голосов
/ 09 сентября 2013

Вот расширение Chrome, которое я написал для решения этой проблемы.

https://chrome.google.com/webstore/detail/varmasterpiece/chfhddogiigmfpkcmgfpolalagdcamkl

...