RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

JDump — отладка расширений в Joomla

отлаживать расширения — одно удовольствие

JDump — отладка расширений в Joomla

Обычно разработчики используют для отладки стандартные функции print_r() и var_dump(). Да, они показывают все содержимое переменной, но вывод приходится обрамлять тегами <pre></pre> и в итоге мы получаем искаженный внешний вид сайта, свалку свойств, "километровую" прокрутку и.т.д. В итоге - убийство времени и сил на "черную работу".

Утилита J!Dump делает жизнь простого программиста проще. Фактически плагин добавляет новый функционал к ядру Joomla. Вся интересующая нас информация теперь будет выводиться в аккуратно оформленном всплывающем окне.

Установка J!Dump

Подходит для Joomla 1.5.x - 1.6.x версий.

Компонент и необходимый к нему плагин можно загрузить по ссылкам в конце страницы. И компонент и плагин должны быть установлены вместе.

Обязательно опубликуйте системный плагин. По умолчанию он называется "J!Dump", находится в группе "system". В противном случае функции отладки будут не доступны и могут вызывать крах всего сайта.

Настройка J!Dump

После установки, у вас появится новый компонент. Перейдя в него, вам откроется краткая справка. На панели инструментов нажмите на параметры. Здесь можно установить:

  • Popup width - Ширина всплывающего окна
  • Popup height - Высота всплывающего окна
  • Auto Popup - Автоматически показывать окно отладки
  • Maximum recursion depth - Максимальная вложенность объекта, которую покажет dump()
  • Trim Strings - обрезать строковые переменные от пробелов по краям
  • Maximum String Length- Максимальная длина строки (в символах)
  • Show origin of call - Показывать место вызова

Окно настроек компонента

Использование отладки в Joomla

Использовать отладку можно практически везде в коде, где определена функция dump().

Функция dump()

dump( $this, 'Переменная $this шаблона' ); 

Просто да? Второй параметр - это опциональная возможность функции, название перменной. Это особенно удобно при использовании нескольких дампов, чтобы легко отличать их друг от друга.

Пример использования в коде Дамп переменной $this в главном шаблоне JoomlaВложенность переменных в виде дереваСписок методов объекта
Блокировка всплывающего окна

Функция dumpSysinfo()

dumpSysinfo(); 

Выводит основную информацию о системе, Joomla, константах, окружении

  • All Defined Constants
  • Environment
  • Joomla Configuration
  • PHP
  • Versions

Функция dumpTemplate()

Используется внутри index.php, для отображения параметров шаблона.

dumpTemplate( $this ); 

Функция dumpMessage()

Отображает какое-нибудь системное сообщение, очень удобно для того чтобы узнать была ли вызвана функция, подключен ли файл, выполнен ли цикл и прочее...

dumpMessage('Используется шаблон '.$this->template); 

 

Функция dumpTrace()

Отображает BackTrace - порядок вызова файлов, функций, аргументы

dumpTrace(); 

Подведем итоги

Плюсы

  • Очень аккуратно отображает данные о объектах, массивах, отличная замена print_r и var_dump.
  • Объектам показывает список доступных методов - подобная вещь к сожалению редко реализуется в отладчиках.
  • Подходит для работы с плагинами, шаблонами, модулями, компонентами и даже библиотеками на лицевой части сайта.
  • Окно дампа можно "заморозить", затем открывать новые и сравнивать предыдущие результаты с текущими.
  • Код расширения написан качественно и понятно, можно легко дополнить своим функционалом.

Минусы

  • Отладка AJAX-запросов через JDump - не самое удобное занятие. Лучше воспользоваться плагином firePHP.
  • Появляется в панели управления никому не нужный пункт с J!Dump, думаю настройки можно было сделать внутри плагина.
  • Всплывающее окно часто блокируется браузером либо системой, для каждого сайта придется добавить исключение.
  • Дампы больших переменных(либо их большого количества) могут подвешивать бразуер.
  • Специфика отладчика не позволяет отлаживаться в панели управления - будет бесконечный редирект, либо другие неприятные вещи.

Замечания

  • Компонент предназначен для использования только на разрабатываемых сайтах. Не используйте его на живом сайте! Советуем удалять либо просто отключать плагин на рабочих сайтах. Это может серьезно навредить безопасности вашего сайта!
  • Вы не можете использовать dump() пока не опубликуете плагин J!Dump, желательно поставить в порядке загрузке его самым первым, чтобы новые функции подключились как можно раньше.

 

В целом расширение очень понравилось, хотя есть некоторые недочеты (а кого их нету?). На деле оказыватся очень удобным, но немного не привычным. Самое большое неудобство на мой взгляд - это медлительность работы JS, но за хорошим железом и быстрым браузером (например, Google Chrome) это не проблема. Рекомендуем!


Смотрите также:
Комментарии (3) Добавить комментарий
  • olga
    olga
    01 Апреля 2013, 16:27
     ↑  0  ↓     ответ

    При работе j!dump в joomla 2.5 при вызове соответствующего пункта меню почему-то дает ошибку 500. Плагин активирован. В чем может быть причина?

    • smet.denis
      smet.denis (админ)
      01 Апреля 2013, 21:40
       ↑  0  ↓     ответ

      А какой текст ошибки?

  • olga
    olga
    04 Апреля 2013, 15:20
     ↑  0  ↓     ответ

    Вот: localhost/project/ru/jdump.html

    Ошибка: 500

    Вы не можете посетить текущую страницу по причине:

    просроченная закладка/избранное

    поисковый механизм, у которого просрочен список для этого сайта

    пропущен адрес

    у вас нет права доступа на эту страницу

    Запрашиваемый ресурс не найден.

    В процессе обработки вашего запроса произошла ошибка.

    Пожалуйста, перейдите на одну из следующих страниц:

    Домашняя страница

    Поиск по сайту

    Если проблемы продолжатся, пожалуйста, обратитесь к системному администратору сайта и сообщите об ошибке, описание которой приведено ниже..

    Представление не найдено [name, type, prefix]: tree, html, dumpView

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.