00: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 - 01:44 09/09/2011 · Журнал · Профиль · |
Три строчки можно заменить одной:
echo '<pre>'. print_r($arr, 1) .'</pre>';
|
| Цитата | |
Написал:
Игорь_Vasinsky - 01:46 09/09/2011 · Журнал · Профиль · |
не.. это не мой стиль)))) да и потом так симпотичней...
|
| Цитата | |
Написал:
inpost - 12: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 - 12:51 09/09/2011 · Журнал · Профиль · |
да... апгрейдить да апгрейдить.
|
| Цитата | |
Написал:
Invis1ble - 22:54 16/10/2011 · Журнал · Профиль · |
установка и настройка xdebug дает гораздо более вкусные плюшки
|
| Цитата | |
Написал:
Игорь_Vasinsky - 00:05 16/12/2011 · Журнал · Профиль · |
ну ты сравнил... это оч просто для всех - по сравнению установкой и настройкой xdebug
|
| Цитата | |
|
|
|