| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Пт Мар 16, 2007 10:41 Заголовок сообщения: Готовое решение: Альтернатива функции var_dump |
|
|
зачастую в процессе отладки бывает необходимо сделать дамп какой-нибудь переменной, чтобы проверить чему же она всё-таки равна. в php есть стандартные функции для этого дела: var_dump и print_r, у которых есть три беды:
1. вставка их вывода в html режет всё их форматирование и в итоге разобрать где что очень сложно. эту проблему обычно решают обрамлением тегами <pre>, а чтобы не писать их каждый раз пишуть функцию-враппер.
2. в случае больших массивов бывает сложно найти нужное место, потому как следующий элемент массива будет находиться после всех детей предыдущего. то есть они выводят сразу всё, а не только то, что необходимо.
3. если вы вставили куда-то вывод переменной, потом отошли на годик другой, вернулись и обнаружили что забыли убрать дамп - бывает довольно сложно найти то место, куда он был вставлен.
в связи с этим я написал функцию дампа в html файл. посмотреть функцию в действии и сравнить с конкурентами можно здесь: http://dark-demon.jino-net.ru/dumptest/
там же можно скачать тестовый пакет.
чтобы также красиво всё отображалось и флип-флопилось, нужно подключить к выводимой страничке скрипт main.js и стиль main.css, либо интегрировать их в ваши скрипты и стили.
в общем, смотрите index.php - там всё предельно ясно.
вызывать функцию элементарно:
или с указанием имени:
с интересом выслушаю предложения и пожелания.
в последней версии добавлено:
- совместимость с IE
- отлов рекурсии
- линки на автораскрытие ветвей (висят на именах переменных)
- даблклик раскрывает все дочерние ветви, кроме скрытых
- скрытые ветви на интах, картинках и потоках с дополнительной информацией.
Последний раз редактировалось: dark-demon (Вс Апр 01, 2007 00:38), всего редактировалось 5 раз(а) |
|
| Вернуться к началу |
|
 |
Google Помошник
Только для не зарегистрированных пользователей |
|
vb nobody

Зарегистрирован: 06.06.2006 Сообщения: 908 Откуда: Saint-Petersburg
|
Добавлено: Пт Мар 16, 2007 11:03 Заголовок сообщения: |
|
|
dark-demon
неплохая идея но есть большой касяк:
Когда делаешь дамп часто делаешь параллельно - правку строчки F5, правку строчки F5 правку строчки F5.
Если тебе надо смотреть на значение где нибудь на 4-м уровне то замаешься каждый раз отщелкивать все. То есть нужно сохранять какие ветви были раскрыты, чтобы после рефреша они опять оказались раскрытыми.
Второй касяк - это Ctrl+F не будет работать. То есть поиск возможен только визуальный - это тоже не есть гуд. Поле чтоли добавить для поиска. Хотя это уже конечно придирка :). Но первый пункт на мой взгляд просто обязателен.
p.s. выделяй код тегами [ php ] <? ?> [/php], а вообще молодец :) |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Пт Мар 16, 2007 11:21 Заголовок сообщения: |
|
|
1. надо подумать...
2. поиск работает, но только по открытым веткам. иногда это удобно. хотя, наверно, можно прикрутить кнопочку "развернуть всё дерево"... _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
vb nobody

Зарегистрирован: 06.06.2006 Сообщения: 908 Откуда: Saint-Petersburg
|
Добавлено: Пт Мар 16, 2007 11:35 Заголовок сообщения: |
|
|
| dark-demon писал(а): |
| работает, но только по открытым веткам. иногда это удобно. |
это итак понятно :). И удобно это всегда когда просматриваешь боьшие массивы данных с большим разбросом этих самых данных. Если приделывать кнопку то наверное она должны быть поверх всего всегда доступна. Иначе не очень то она и нужна. |
|
| Вернуться к началу |
|
 |
Mavir
Зарегистрирован: 13.03.2006 Сообщения: 1452 Откуда: Минск
|
Добавлено: Пт Мар 16, 2007 12:08 Заголовок сообщения: |
|
|
Для отладки использую класс dBug. _________________ Не плачьте, из-за того, что это закончилось; улыбнитесь, потому что это случилось. |
|
| Вернуться к началу |
|
 |
Psih Телепат

Зарегистрирован: 28.12.2006 Сообщения: 2247 Откуда: Рига, Латвия
|
Добавлено: Пт Мар 16, 2007 14:31 Заголовок сообщения: |
|
|
А я лично использую сфою функцию
| PHP: |
- <?
- function _debug($var = 'no value', $die = false)
- {
- if (in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '192.168.0.1')))
- {
- if ($var === true || $var === false){
- echo $var === true ? 'true' : 'false';
- if ($die)
- die();
- return;
- }
- if (is_array($var) || is_object($var)){
- echo '<pre>'.print_r($var, true).'</pre>';
- if ($die)
- die();
- return;
- }
- echo htmlspecialchars($var);
- if ($die)
- die();
- return;
- }
- }
- ?>
|
Если данных много, я просто вывожу ту часть, где у меня возможный глюк :) |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Вт Мар 20, 2007 23:46 Заголовок сообщения: |
|
|
Всё, финальный релиз ^_^ всех заинтересовавшихся прошу перечитать первый пост. _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
Danilevsky
Зарегистрирован: 12.02.2006 Сообщения: 298 Откуда: Киев
|
Добавлено: Чт Мар 22, 2007 07:57 Заголовок сообщения: |
|
|
| Mavir писал(а): |
| Для отладки использую класс dBug. |
определенно, очень удобный и полезный класс |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Чт Мар 22, 2007 16:08 Заголовок сообщения: |
|
|
пара камней в его огород: NULL распознаёт как пустую строку, при выводе не заменяет сущности, простую переменную (не объект, массив или ресурс) выводит без какого-либо оформления.
Последний раз редактировалось: dark-demon (Чт Мар 29, 2007 15:47), всего редактировалось 1 раз |
|
| Вернуться к началу |
|
 |
Hight соАдмин

Зарегистрирован: 05.03.2006 Сообщения: 6185 Откуда: из злой параллельной вселенной
|
Добавлено: Чт Мар 29, 2007 12:16 Заголовок сообщения: |
|
|
да, интересно... единственное, что не понравилось - это "заморочка" с шаблонами, из-за этого тяжело использовать данную разработку. всё-таки автор для себя писал. а лично я предпочитаю print_r ;) _________________ Всё сложное - не нужно, всё нужное - просто. |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Чт Мар 29, 2007 15:45 Заголовок сообщения: |
|
|
нет там никаких заморочек... просто положить все шаблоны в папку out в папке со скриптом...
сегодня выложу всё одним архивом... |
|
| Вернуться к началу |
|
 |
Hight соАдмин

Зарегистрирован: 05.03.2006 Сообщения: 6185 Откуда: из злой параллельной вселенной
|
Добавлено: Чт Мар 29, 2007 15:58 Заголовок сообщения: |
|
|
| dark-demon писал(а): |
| нет там никаких заморочек... |
я не просто так в кавычки это слово взял.
| dark-demon писал(а): |
| просто положить все шаблоны в папку out в папке со скриптом... |
отладочная функция, зачем вообще шаблоны. хотя, на вкус на цвет, как говорится 8) _________________ Всё сложное - не нужно, всё нужное - просто. |
|
| Вернуться к началу |
|
 |
Psih Телепат

Зарегистрирован: 28.12.2006 Сообщения: 2247 Откуда: Рига, Латвия
|
Добавлено: Чт Мар 29, 2007 16:02 Заголовок сообщения: |
|
|
| PHP: |
- <?php
- echo '<pre>'.print_r($variable, true).'</pre>';
- ?>
|
И ненадо никаких шаблонов. Удобно и легко читаеться. Прикручивать ещё какие-то шаблоны и классы для дебага... ужос на!
Представляю всю эту колбасню раскрашенную в небольшой ячейке таблицы которая в центре сайта где-нить :D |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Чт Мар 29, 2007 16:30 Заголовок сообщения: |
|
|
| Цитата: |
| Прикручивать ещё какие-то шаблоны и классы для дебага... ужос на! |
1. не только для дебага. сей "шаблонизатор" - продвинутая замена обычному инклуду.
2. один раз прикрутить, чтобы потом на всю жизнь забыть про недоразумение print_r, - не такая уж и большая цена.
| Цитата: |
| Представляю всю эту колбасню раскрашенную в небольшой ячейке таблицы которая в центре сайта где-нить |
представляю как её разопрёт от <pre>...
кроме <pre> тебе ещё нужно юзать htmlspecialchars, чтобы отображалость то, что в строке, а не то, как это выводится в браузере. да и вообще, информативность у print_r крайне низкая. |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Чт Мар 29, 2007 16:54 Заголовок сообщения: |
|
|
кстати, vardump благодаря нейтральным цветам замечательно подходит к любому дизайну, в отличие от аляповатого dBug :-] _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
Mavir
Зарегистрирован: 13.03.2006 Сообщения: 1452 Откуда: Минск
|
Добавлено: Чт Мар 29, 2007 17:33 Заголовок сообщения: |
|
|
| dark-demon писал(а): |
| кстати, vardump благодаря нейтральным цветам замечательно подходит к любому дизайну, в отличие от аляповатого dBug |
Это все меняется с помощью CSS _________________ Не плачьте, из-за того, что это закончилось; улыбнитесь, потому что это случилось. |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Чт Мар 29, 2007 18:33 Заголовок сообщения: |
|
|
ну вот и выбирай, либо править CSS, либо прокручивать темплейты :)
Кстати, автор dBug сказал, что поправил основные отмеченные мной баги - рекомендую обновить. |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Сб Мар 31, 2007 02:29 Заголовок сообщения: |
|
|
Поправил, да не все. Варнинги всё ещё появляются и замены на html-сущности так и не происходит...
Обновил сабж - теперь тестовый пакет можно скачать одним архивом. _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
MiksIr
Зарегистрирован: 29.11.2006 Сообщения: 670
|
Добавлено: Сб Мар 31, 2007 13:11 Заголовок сообщения: |
|
|
Всегда хватало print_r, выыод читался безо всякого pre простым view_source, нужное место искалось поиском, и забывать убрать print_r после отладки как-то не удавалось забыть - на рабочем месте не бухаем, но даже если и забыли, grep найдет все, что нужно.
Чорт, неужели я опять что-то делаю не так? ;( |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Вс Апр 01, 2007 00:33 Заголовок сообщения: |
|
|
| Цитата: |
| Всегда хватало print_r, выыод читался безо всякого pre простым view_source, нужное место искалось поиском |
ключевое слово - "искалось" :) в нескольких тяжёлых дампах приходится усердно искать нужные данные. и при рефреше - всё по новой.
| Цитата: |
| забывать убрать print_r после отладки как-то не удавалось забыть - на рабочем месте не бухаем |
для этого не обязательно бухать - можно просто отвлечь.
| Цитата: |
| grep найдет все, что нужно. |
могу поспорить он найдёт ещё и кучу строк типа:
| Код: |
| #var_dump($myvariable); |
впрочем, не в этом основная причина - иметь трейсдамп полезно, чтобы можно было тут же посмотреть с какими параметрами была вызвана функция и откуда. не знаю как тебе, а мне в таких случаях удобнее щёлкнуть пару раз мышью, чем переключаться на редактор, добавлять трейсдамп, закачивать на сервер и переключаться обратно. или другой пример: делаешь дамп массива одно из полей которого содержит таймстемп. чтобы узнать дату тебе нужно лезть в сорц и добавлять отдельный вывод для этого таймстемпа. мне же для этого достаточно одного щелчка мышью. _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
Dagdamor

Зарегистрирован: 04.02.2006 Сообщения: 1789 Откуда: Барнаул
|
Добавлено: Вс Апр 01, 2007 00:43 Заголовок сообщения: |
|
|
Небольшой оффтоп:
Интересно, а можно ли как-нибудь в PHP (под локальной сборкой) узнать состояние клавиатуры? ;) Scroll Lock включен - сайт работает в режиме отладки, выключен - все как обычно, а на продуктиве данная функция себя вообще никак не проявляет :D Удобно ведь ;) _________________ Братья и сестры, опомнитесь! Что вы делаете? Вы же братья и сестры...
PHP Compiler - простой, но мощный фреймворк на PHP |
|
| Вернуться к началу |
|
 |
Гость
|
Добавлено: Вс Апр 01, 2007 02:12 Заголовок сообщения: |
|
|
| Dagdamor, интересная идея :) можно повесить на хоткеи и яваскриптом ставить куку. |
|
| Вернуться к началу |
|
 |
AlexGousev

Зарегистрирован: 25.03.2006 Сообщения: 1507 Откуда: Москва
|
Добавлено: Вс Апр 01, 2007 04:43 Заголовок сообщения: |
|
|
Продолжение небольшого оффтопа:
| Dagdamor писал(а): |
| Интересно, а можно ли как-нибудь в PHP (под локальной сборкой) узнать состояние клавиатуры? Wink Scroll Lock включен - сайт работает в режиме отладки, выключен - все как обычно, а на продуктиве данная функция себя вообще никак не проявляет Very Happy Удобно ведь Wink |
Чисто теоретически можно написать модуль для PHP, который получает состояние клавиатуры сервера. Но зачем? Проще в конфиге задавать уровень отладки (именно так я и делаю). А scroll lock у меня индикатор раскладки клавиатуры: не надо его трогать :) |
|
| Вернуться к началу |
|
 |
Горбунов Олег Гость
|
Добавлено: Вс Апр 01, 2007 10:21 Заголовок сообщения: |
|
|
Тож оффтоп
| AlexGousev писал(а): |
| Чисто теоретически можно написать модуль для PHP, который получает состояние клавиатуры сервера |
Видел класс на PHP через COM обьект выдвигал лоток привода на серваке. ^_^ LOL =)
| AlexGousev писал(а): |
| А scroll lock у меня индикатор раскладки клавиатуры: не надо его трогать |
Я предпочел Caps - все равно не пользуюсь, и под рукой ближе. |
|
| Вернуться к началу |
|
 |
dark-demon
Зарегистрирован: 16.02.2007 Сообщения: 1924 Откуда: леноград
|
Добавлено: Вт Июл 24, 2007 19:13 Заголовок сообщения: |
|
|
наткнулся тут на интересное решение: http://www.firephp.org/Demo/
если в кратце, то оно использует http-заголовки для передачи данных, а специальное расширение для расширения для браузера написанного на движке мозилла смотрит эти заголовки и выводит в специальной панельке. _________________
\\(x\(x_\(x_x\(0_0)/x_x)/_x)/x)//
смерть человекам! |
|
| Вернуться к началу |
|
 |
|