Intereting Posts
Производительность: если else vs switch, а vs for, для каждого vs for, print vs printf сортировка массива php внутри массива на основе значения Отображать повторяющиеся даты из базы данных SQL с помощью PHP как заменить адрес электронной почты из html innertext как включить расширение управления процессом (PCNTL) в PHP MAMP? Не удалось достоверно определить полное доменное имя сервера для MacBook Подстановочные знаки в поиске массива Как получить реальный URL-адрес после file_get_contents, если произойдет перенаправление? Разрешение не более 2 строк в текстовой области NGINX – PHP-FPM Обслуживание видеороликов Поиск и подключение Неустранимая ошибка: вызов неопределенной функции imap_open () в PHP как избежать ввода, но сохранить не привязанные к базе данных Код работает в Chrome, но не в Firefox Передача переменной из контроллера для просмотра в CodeIgniter Как обнаружить, если элемент XML пуст, используя DOMDocument в PHP?

Отправка «var_dump» в консоль FireBug

Как вы знаете, var_dump() в дополнение к значению показывает его тип и длину данных .

Есть ли способ зарегистрировать свой вывод в консоли FireBug ?

Я попробовал FirePHP и FireLogger, но оба выводят только значение переменной (иногда даже неправильное значение переменной).

Related of "Отправка «var_dump» в консоль FireBug"

Возможно, вам нужно что-то вроде этого:

 function var2console($var, $name='', $now=false) { if ($var === null) $type = 'NULL'; else if (is_bool ($var)) $type = 'BOOL'; else if (is_string ($var)) $type = 'STRING['.strlen($var).']'; else if (is_int ($var)) $type = 'INT'; else if (is_float ($var)) $type = 'FLOAT'; else if (is_array ($var)) $type = 'ARRAY['.count($var).']'; else if (is_object ($var)) $type = 'OBJECT'; else if (is_resource($var)) $type = 'RESOURCE'; else $type = '???'; if (strlen($name)) { str2console("$type $name = ".var_export($var, true).';', $now); } else { str2console("$type = " .var_export($var, true).';', $now); } } function str2console($str, $now=false) { if ($now) { echo "<script type='text/javascript'>\n"; echo "//<![CDATA[\n"; echo "console.log(", json_encode($str), ");\n"; echo "//]]>\n"; echo "</script>"; } else { register_shutdown_function('str2console', $str, true); } } 

Использование: var2console($myvar, '$myvar'); или просто var2console($myvar);

Очень редко необходимо установить для параметра $now значение true , вызывая немедленный вывод <script> . Преимущество использования register_shutdown_function() заключается в том, что вам не нужно обращать внимание на «где вы» в HTML.

json_encode() сохраняет все символы при передаче с PHP на JavaScript. Единственное предостережение о кодировании: json_encode() работает только с UTF-8 (это в большинстве случаев рекомендуемая кодировка). Вам может понадобиться что-то вроде utf8_encode() или mb_convert_encoding() если вы используете другую кодировку (вернее, вы можете переходить на UTF-8 ).

Вывод на консоль Firebug – это просто вывод var_export() , которому предшествует тип переменной, включая длину строк и количество массивов, и, необязательно, имя переменной.

var_export() обеспечивает более читаемый вывод, чем var_dump() . Если вам действительно нужен вывод var_dump() , вы можете использовать что-то вроде этого:

 function dump2console($var, $name='', $now=false) { ob_start(); if (strlen($name)) { echo "$name =\n"; } var_dump($var); $str = ob_get_clean(); str2console($str, $now); } 

Использование: dump2console($myvar, '$myvar'); или просто dump2console($myvar);

Вам следует избегать циклических ссылок ( var_dump() обнаруживает их слишком поздно, и var_export() вообще не обнаруживает их). Вот как это делается, например, для $GLOBALS :

 function globals2console($now=false) { $g = $GLOBALS; $g['GLOBALS'] = '(recursion)'; var2console($g, '$GLOBALS', $now); } 

Вы можете сбросить JavaScript на консоль, поставив console.log () в тег скрипта:

 <script type="text/javascript"> console.log("hello"); </script> 

Так что если вы делаете сбой php там …

 <script type="text/javascript"> console.log("<?php var_dump('abc'); ?>"); </script> 

Вам просто нужно быть осторожным в отношении «и» в var_dump, нарушающем ваш JavaScript. В этом примере это будет нормально, потому что HTML будет:

 <script type="text/javascript"> console.log("string 'abc' (length=3)"); </script> 

Просто помните, что php обрабатывается, а затем помещается в JavaScript. Вы также можете отправить его в комментарий:

 <!-- <?php var_dump('abc'); ?> --> 

Затем вы можете просмотреть источник или проверить элемент.

 <script>console.log( <?= json_encode( $var ) ?> )</script> 

Просто бросаю шляпу в кольцо. Похоже, FirePHP – лучший способ пойти.

FirePHP хорошо выполняет эту работу, и вы можете использовать ее во время разработки Ajax.

Образец кода:

 require_once('FirePHPCore/fb.php'); # add the library fb($var); #log the variable fb( var_export($var,true) ); # log the variable with the var_export format 

Если вы передаете массив, вы можете щелкнуть его с консоли и открыть всплывающее окно на вашем экране. Вы даже можете развернуть / свернуть массивы и объекты.

EDIT: Если вы ищете типы данных и длину, используйте var_dump() .

 fb( var_dump( array( 1, 'a', true ) ) ); 

Я всегда использую этот скрипт в сочетании с Zend_Log_Writer_Firebug (используя firephp http://www.firephp.org/ ), потому что после перенаправления в приложениях или приложениях ajax отладка с помощью xdebug не всегда работает так, как ожидалось:

 require_once '/Zend/Log.php'; require_once '/Zend/Log/Writer/Firebug.php'; require_once '/Zend/Controller/Response/Http.php'; require_once '/Zend/Controller/Request/Http.php'; // create the logger and log writer $writer = new Zend_Log_Writer_Firebug(); $logger = new Zend_Log($writer); // get the wildfire channel $channel = Zend_Wildfire_Channel_HttpHeaders::getInstance(); // create and set the HTTP response $response = new Zend_Controller_Response_Http(); $channel->setResponse($response); // create and set the HTTP request $channel->setRequest(new Zend_Controller_Request_Http()); // record log messages $logger->info('test'); $logger->info(var_export($_SESSION,true)); $logger->info(count(var_export($_SESSION,true))); $logger->info(strlen(var_export('hello',true))); $logger->info(get_type($_SESSION,true)); // insert the wildfire headers into the HTTP response $channel->flush(); // send the HTTP response headers $response->sendHeaders(); 

Вы можете создать свою собственную библиотеку, чтобы получить тип переменной:

 <?php function get_type($var) { if(is_object($var)) return get_class($var); if(is_null($var)) return 'null'; if(is_string($var)) return 'string'; if(is_array($var)) return 'array'; if(is_int($var)) return 'integer'; if(is_bool($var)) return 'boolean'; if(is_float($var)) return 'float'; if(is_resource($var)) return 'resource'; //throw new NotImplementedException(); return 'unknown'; } ?> 

Также полезно использовать вызов функции var_dump_ret в качестве аргумента для $ logger-> info (). Я еще не тестировал его.

 function var_dump_ret($mixed = null) { ob_start(); var_dump($mixed); $content = ob_get_contents(); ob_end_clean(); return $content; } 

если вы просто хотите увидеть, что var_dump вне в firebug (на стороне клиента), не делая никаких вещей в Javascript, я бы рекомендовал использовать куки-файлы, вот иллюстрация того, как вы можете это сделать:

 <?php $str = "Abu Romaïssae"; sendVarDumpToFront($str); echo "<pre>"; echo $str."\n"; function sendVarDumpToFront( $mixed ){ ob_start(); var_dump($mixed); $content = ob_get_contents(); ob_end_clean(); setcookie("var_dump",$content); } 

чем вы можете иметь его в firebug таким образом:

чтение содержимого cookie из Firebug

ВАЖНЫЙ

так как этот способ использует файлы cookie, вам нужно будет поместить содержимое var_dump перед выводом любого контента, иначе это не сработает

От: http://sixrevisions.com/web-development/how-to-debug-php-using-firefox-with-firephp/ Fb::log($array, "dumping an array") Это даст вам тип и данные. Вам нужно будет выполнить дополнительный журнал вручную для длины / подсчета.

Следующее возьмет что-нибудь из var_dump () и закодирует его в JSON, прежде чем пытаться отправить его в console.log (). Это предотвращает появление специальных символов.

 <?php $myArray = array('Red','Green','Blue','Orange','Yellow','Purple'); ob_start(); var_dump($myArray); $var_dump = ob_get_contents(); ob_end_clean(); ?> <script> var var_dump = <?php echo json_encode($var_dump); ?>; console.log(var_dump); </script> 

Если у вас есть вызов Ajax (XHR), который генерирует вывод с помощью var_dump (), вы можете проверить запрос в FireBug либо в «Консоль», либо «Сеть» . Нажмите знак «плюс», чтобы развернуть его и посмотреть вкладку «Ответ» .

В противном случае, если вы ставите var_dump () на главную страницу, которую вы просматриваете, она должна просто отображаться на странице, если смотреть, но форматирование может быть испорчено. Пытаться

 echo '<PRE>' 

перед var_dump () или альтернативно просматривать источник страницы, а не прямой вывод.

Я думаю, что один простой способ достичь этой цели – сделать простой

console.log(<?php var_export($var, true) ?>);

Вы слишком усложняете, что является простой проблемой. Firebug (и любой другой просмотрщик журналов консоли / dom предназначен для просмотра выходных данных на стороне клиента. PHP является серверной частью и не имеет большого смысла толкать консольный журнал.

С учетом сказанного, если вы ДЕЙСТВИТЕЛЬНО хотели бы передать серверный вывод в консольный журнал, вы должны преобразовать этот вывод в json и передать его в журнал консоли. Если вы просто хотите вывести значения переменных на жизненном сайте, не зная, что вы работаете над ним (и вы все равно не должны работать над реальной версией, но это не относится к делу), почему бы не передавать вывод в файл и читать который выводит, как вам нравится, вы даже можете использовать ajax для передачи дампа в журнал через jquery.

То, что я пытаюсь сделать, это … вы слишком усложняете то, что вы пытаетесь сделать.

только из JavaScript jquery Из массивов в firebug и chrome:

  console.dir('[object arrays]'); 

откройте консоль и активируйте ее до F12 … и напишите этот код в консоли var_dump для php из jquery. массив для json

 var test = {"names":["john doe","JANE doe"],"ids":["123",null]}; console.dir(test); 

если вам нужна прямая консоль fron PHP нужен плагин