mJournal
· Форум · Участники · Журналы · Случайный журнал ·
Главная -> Журналы -> Игорь_Vasinsky -> 09 сентября 2011 -> Комментарии
PHP во сне и на яву
 
09 сентября 2011
  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):

user posted image


Эх.. не победил я ещё регулярки (т.е. паттерны), а так бы раскрасить можно было по красивше.

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(); , то есть перевод: "что произошло?" smile.gif
А ещё, ты передаёшь так: 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 дает гораздо более вкусные плюшки wink.gif


| Цитата |
  Написал: Игорь_Vasinsky - 00:05 16/12/2011  · Журнал · Профиль ·
ну ты сравнил... это оч просто для всех - по сравнению установкой и настройкой xdebug biggrin.gif


| Цитата |

 
Игорь_Vasinsky


★ЛжеЭксперт★


Регистрация 14.03.2010
E-mail Отправить
Приват Отправить
WWW Нет данных
ICQ Нет данных
Профиль Перейти
Рейтинг
Рейтинг: 4.4    Голосов: 18
Список друзей
inpost quickxyan sharki
TMake twin zvezda_t
ИНСИ
Календарь
декабрь 2017
пн вт ср чт пт сб вс
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Статистика
Просмотры
Сегодня: 1
Всего: 55140
Хосты
Сегодня: 1
Всего: 55116
Последний комментарий
[6] Отладка скриптов PHP...
16.12.2011 00:05
Написал: Игорь_Vasinsky
[4] Тернарный оператор (...
09.09.2011 13:49
Написал: Игорь_Vasinsky
[4] Загрузка картинки дл...
09.09.2011 13:09
Написал: Игорь_Vasinsky
[2] Зашита от F5 (повто...
21.03.2010 00:30
Написал: Игорь_Vasinsky