Пользователь
0,0
рейтинг
30 августа 2013 в 17:27

Разработка → Дебаггер для Yii 1.1 портированный из Yii 2 из песочницы

Yii*
Доброго времени суток, коллеги!

Недавно команда разработчиков фреймворка Yii 2 порадовала сообщество нативной дебаг-панелью. Важная особенность этого дебаггера в том, что он пишет историю, и дает возможность исследовать отладочную информацию от каждого запроса к yii-проекту. Это делает простым и приятным занятием отладку ajax-запросов, страниц с редиректами, рендеринг графических изображений и прочее.

Внешний вид и принцип использования одной из ранних версий дебаггера в Yii 2 можно увидеть на видеоролике Александра Макарова (SamDark):



Вдохновленный этим замечательным инструментом, я решил портировать его на Yii 1.1. Код, который в итоге получился, можно посмотреть на github.


Внешний вид дебаггера (в картинках)
Минимизированная панель с суммарной информацией на странице yii-проекта. Все блоки на панели кликабельны, ссылки ведут на страницы для детального просмотра отладочных данных.



Страница Configuration.



Выпадающий список со ссылками на 10 последних запросов.



Страница «Request».



Страница «Logs».



Страница «Database» со списком sql-запросов и информацией по подключениям к БД.



История.




Установка и настройка



Чтобы установить дебаггер в свой проект необходимо скачать исходники и дополнить конфиг проекта необходимым минимумом настроек:

return array(
    'preload' => array(
        'debug',
    ),
    'components' => array(
        'debug' => array(
            'class' => 'ext.yii2-debug.Yii2Debug',
        ),
        'db' => array(
            'enableProfiling' => true,
            'enableParamLogging' => true,
        ),
    ),
);


Для более тонкой настройки компонента Yii2Debug доступны следующие свойства:

  • enabled — включение/выключение дебаггера.
  • allowedIPs — список ip, которым разрешен доступ к дебаггеру.
  • logPath — путь для записи логов.
  • historySize — максимальное кол-во записанных логов. Более ранние логи будут удаляться.
  • highlightCode — подсветка кода. Подсвечиваются sql-запросы и php-массивы данных.
  • panels — массив подключенных к дебаггеру панелей.
  • moduleId — ID модуля для просмотра ранее сохраненных данных.


В заключение хотелось бы добавить что, дебаггер можно дополнять своими панелями с отладочными данными. Для каждой такой панели необходимо: разработать свой класс унаследовав его от Yii2DebugPanel, и добавить его в массив panels компонента Yii2Debug.

Спасибо за внимание. Надеюсь это расширение сделает вашу работу с Yii еще более комфортной. Буду благодарен за багрепорты и толковые идеи. Отдельное спасибо команде разработчиков Yii за их труды и их светлые головы.

Код на github
Обсуждение на yiiframework.ru
Код нативного дебаггера Yii 2 на github
Роман Журавлев @Zhuravljov
карма
12,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (15)

  • +2
    А зачем в README анонсировать способ установки через копирование сорцов, если там лежит composer.json?
    • +1
      Composer-пакет был оформлен позже чем последняя правка в README. Там вообще довольно скупое описание, как-то всё руки не доходили дописать.
      Спасибо, поправлю.
  • 0
    Хотел бы добавить, что по-умолчанию доступ к панели разрешен только с локальных адресов.
    А сам дебаггер очень удобный, спасибо за данный порт.
  • 0
    CLogRouter с оформлением симфоневского WebProfilerBundle и парой мелких плюшек?
    • 0
      А существует ли возможность добавить нечто вроде Timeline из того же Symfony? Иногда полезная штука, хотя может и не настолько. Разве что нагляднее представляются данные. Поидее все данные для этого есть.
      • +2
        Можете поподробнее про Timeline? Я с Symfony не работал, не знаю о чем речь.
        • +1
          Примерно вот такое. Правда в Yii нету таких вещей как листенеры (можно сделать все тоже черед переопределение компонентов и черед декораторы). Да и нету HMVC, разве что модули. Так что не знаю имеет ли смысл.
          • +1
            Можно попробовать сделать. Архитектура позволяет, дело лишь в визуальной презентации.
  • –1
    Я правильно понимаю, что новая крутая панель в Yii2 — это то, что в Symfony2 уже давно есть?
    • +1
      Просто улучшение юзабилити того, что в Yii тоже было давно. Принципиально новых вещей (аля explain всех запросов) там не производится, просто удобный анализ логов.
      • +2
        explain — хорошая идея. Можно сделать.
        • +1
          Сделаем.
        • 0
          Сделал explain. Работает для mysql и sqlite. Остальные типы подключений проверить пока негде. Если у кого-то есть желание помочь с тестированием, прошу сюда.
  • 0
    Like like like!
    Я из-за этого дебагера со вторым yii завязался, так он мне понравился, но там еще все так сыро, а тут на тебе!
    Спасибо огромное!
  • 0
    Накатил, доволен как удав. Спасибо за расширение.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.