20:39 Отладка скриптов PHP, мониторинг глоб.массивов |
Наверника все и не раз сталкивались с моментом, когда во время отладки кода теряются какие либо переменные глобальных массивов, или же вы просто забываете как называется елемент какого либо глобального массива.
Этот момент легко контролировать 2 известными мне вариантами:
1. var_dump()
Цитата |
var_dump($_SESSION); |
2. print_r (Более красивый и удобный)
Цитата |
echo "<pre>";
print_r($_POST);
echo </pre>; |
Мне конечно удобней использовать 2й вариант, так как он выводит красивое дерево массива, но каждый раз писать (даже эти 3 строчки) мне становиться лень, темболее, что иногда это делаю я по нескольку десятков раз в день.
Именно по этому я решил написать функцию, которая бы заменила эти 3 строчки в несколько символов;
Назвал я её по началу globalsView(), но из-за лени переименовал в gview() (g-оставил, для красоты!)
Функция имеет всего один аргумент в качестве которого можно указать один из 4 суперглобальных массивов: POST, GET, FILES, SESSION (но указываются они не как элементы php, а как строки - в ковычках)
Цитата |
function gview($globals)
{
if($globals == "POST"){$title = "<strong style='color:blue'>Массив POST</strong>"; $arr = $_POST;}
elseif($globals == "GET"){$title = "<strong style='color:blue'>Массив GET</strong>"; $arr = $_GET;}
elseif($globals == "FILES"){$title = "<strong style='color:blue'>Массив FILES</strong>"; $arr = $_FILES;}
elseif($globals == "SESSION"){$title = "<strong style='color:blue'>Массив SESSION</strong>"; $arr = $_SESSION;}
ob_start();
echo "<pre>";
print_r($arr);
echo "</pre>";
$buffer = ob_get_contents();
ob_end_clean();
if($globals == $_GET)
$title = "<strong style='color:blue; font-size:15px'>Массив GET</strong>";
if($globals == $_FILES)
$title = "<strong style='color:blue'>Массив FILES</strong>";
if($globals == $_SESSION)
$title = "<strong style='color:blue'>Массив SESSION</strong>";
$strings = array("Array", "[", "]", "=>", ",", ")", "(", "<br />");
$repalce = array($title,"<strong style='color:red;'>", "</strong>", "<span style='color:blue;'>-></span>","", "", "", "");
$buffer = str_replace($strings,$repalce ,$buffer);
$buffer = "<div style='border: 1px solid gray; background: white; padding: 10px; margin: 2px'>".$buffer."</div>";
echo $buffer;
}
|
Потом я один раз её подключаю, где нить в самом верх index.php (в моих сайтах он всегда роутер)
Вызов функции, как я и говорил - несколько символов:
Цитата |
gview("POST");
gview("GET");
gview("FILES");
gview("SESSION");
|
А работает она так (Как дополнительный вспомогательный BOX):
Эх.. не победил я ещё регулярки (т.е. паттерны), а так бы раскрасить можно было по красивше.
p/s Рассматривал так же возможность одного вызова, использовав 4 аргумента (под 4 массива) и так же если время будет - подкорректировать её под любой массив. Вообщем эти 2 момента оставлю на апгрейт.
|
| Цитата || Печать || Комментарии:6 | |
Написал: neadekvat - 21:44 08/09/2011 · Журнал · Профиль · |
Три строчки можно заменить одной:
echo '<pre>'. print_r($arr, 1) .'</pre>';
|
| Цитата | |
Написал: Игорь_Vasinsky - 21:46 08/09/2011 · Журнал · Профиль · |
не.. это не мой стиль)))) да и потом так симпотичней...
|
| Цитата | |
Написал: inpost - 08:48 09/09/2011 · Журнал · Профиль · |
ob_start();
echo "<pre>";
print_r($arr);
echo "</pre>";
$buffer = ob_get_contents();
ob_end_clean();
Вот весь этот мусор заменяется одной: $buffer = '<pre>'. print_r($arr, 1) .'</pre>';
Весь этот мусор:
if($globals == $_GET)
$title = "<strong style='color:blue; font-size:15px'>Массив GET</strong>";
if($globals == $_FILES)
$title = "<strong style='color:blue'>Массив FILES</strong>";
if($globals == $_SESSION)
$title = "<strong style='color:blue'>Массив SESSION</strong>";
Заменяется коротко:
Массив $globals;
Ну и название: gview не особо нравится, у меня вообще wtf(); , то есть перевод: "что произошло?" 
А ещё, ты передаёшь так: gview("POST"); , а я бы передавал так: $_POST, то есть можно как глобальную переменную передавать, так и обычную переменную, допустим: $var, которая тоже может быть массивом, и которую тоже неплохо было бы проверить.
И в заключение, обрати внимание на концовку моей функции, а именно на $status (п.с. после просмотра твоей функции, я свою немного перепишу, так же красиво сделаю):
function wtf($data,$status = false)
{
echo '<pre>';
print_r($data);
if(!$status)
exit();
else
echo '</pre>';
}
|
| Цитата | |
Написал: Игорь_Vasinsky - 08:51 09/09/2011 · Журнал · Профиль · |
да... апгрейдить да апгрейдить.
|
| Цитата | |
Написал: Invis1ble - 18:54 16/10/2011 · Журнал · Профиль · |
установка и настройка xdebug дает гораздо более вкусные плюшки 
|
| Цитата | |
Написал: Игорь_Vasinsky - 20:05 15/12/2011 · Журнал · Профиль · |
ну ты сравнил... это оч просто для всех - по сравнению установкой и настройкой xdebug 
|
| Цитата | |
|
|
|