PHP: как вывести переменную или массив в консоль браузера вместе с именем?
Причём, мы хотим это сделать в "нормальном" виде "$имя = значение
", например, для этого кода на PHP
<?php //переменная-число $var = 1.218; pr($var); //переменная-строка с кавычками внутри $var = "'\"coocooo'\""; pr($var); //обычный массив $arr = [1,2,3]; pr($arr); //ассоциативный массив $d = array('foo' => 'bar', 'baz' => 'long'); pr($d); //двумерный массив $arr2 = array ( array(1,2,3), array(4,5,6) ); pr($arr2); //объект класса class foo { public $prop; //приватные свойства наш метод, разумеется, не покажет! function __construct ($prop = 0) { $this->prop = (is_numeric($prop) ? $prop : 0); } function get() { return $this->prop; } } $bar = new foo (10); pr($bar); ?>
где pr()
- недостающая функция, мы хотим увидеть в консоли примерно следующее:
вывод в консоль браузера имени и значения переменной или массива PHP
Да, в PHP 5.6 и выше есть интерактивный отладчик (только с его длинными именами функций толком ещё никто не работал), можно также пользоваться средствами браузера и т.п., холиваров в инете куча, нет только ответа на наш вопрос.
Вот какую функцию, решающую задачу, я написал:
<?php function pr ($val){ $bt = debug_backtrace(); $file = file($bt[0]['file']); $src = $file[$bt[0]['line']-1]; $pat = '#(.*)'.__FUNCTION__.' *?\( *?(.*) *?\)(.*)#i'; $var = preg_replace ($pat, '$2', $src); echo '<script>console.log("'.trim($var).'='. addslashes(json_encode($val,JSON_UNESCAPED_UNICODE)) .'")</script>'."\n"; } ?>
Функция работает только с кодировкой UTF-8 из-за json_encode.
Если листинг выше сохранить как файл с именем, скажем, pr.php
, удобно будет подключать функцию отдельным модулем:
<?php require_once('pr.php'); $a = [ [ [1,2], [3,4] ], [ [5,6], [7,8] ] ]; pr($a); $c = 1e3; pr($c); pr ('coo'); ?>
Предполагается, что файлы расположены в одной папке и имеют кодировку Юникода utf-8. Скрипт проверялся в XAMPP с PHP 7.X.
Вывод в консоли для этого примера:
$a=[[[1,2],[3,4]],[[5,6],[7,8]]] $c=1000 'coo'="coo"
Тем не менее, наша функция не будет печатать, например, переданные ей аргументом строки в двойных кавычках, принимать списки из нескольких аргументов и т.п.
Следует помнить, что в общем случае нужно предпочитать "официальные" инструменты отладки.
Какими комбинациями клавиш вызывается консоль в разных браузерах?
Ctrl + Shift + J - в Google Chrome; Ctrl + Shift + K - в Mozilla Firefox; F12 - в Internet Explorer, Microsoft Edge; Ctrl + Shift + I - в Opera; Ctrl + Alt + I - в Safari.
Вывод отладочной информации в консоль удобен прежде всего тем, что ничего не "вываливает" на формируемую браузером страницу. Когда функция станет не нужна, можно просто сделать её пустой:
<?php function pr ($val) { } ?>
или закомментировать содержимое:
<?php function pr ($val) { /* код функции */ } ?>
11.02.2020, 12:12 [14987 просмотров]