Pull to refresh

Comments 47

Он уже давно ушёл с гуглкода на гитхаб и стал совсем другим, красивым и модным :)
Мне как-то старый дизайн больше по нраву. Ностальгия по серым виндовым окошкам.
Ага, в Kohana такую же сделали — удобная весчь.
Мне одному это напоминает django-debug-toolbar ???
Врядли одному.
А какая собственно разница? Главное, чтобы работало, не так ли?
Symfony в свое время очень радовал такой панелькой. Джанго, собственно, тоже. Почему бы и нет? :)
Он не просто напоминает. django-debug-toolbar'a мне в Yii очень не хватало, вот я его частично и перенес.
А еще рекомендую xdebug у него вывод тоже очень информативен и есть куча всяких дополнительных возможностей.
UFO just landed and posted this here
Не нашел расширения для Yii. На досуге попробую прикрутить. Спасибо за наводку.
Не нужны никакие расширения Yii, это расширение PHP, которое для своей работы ничего не требует от php-кода и является полноценным дебаггером (интерфейс для отладки через xdebug есть во многих IDE'шках).
Я понимаю, что это самостоятельный продукт. Но нужно его же интегрировать в ядро. А для этого нужно расширять CLogRouter с функциями xdebug
Не нужно, xdebug не выполняет функции логирования, соответственно CLogRouter здесь вообще не при делах, разве что можно вывести служебную информацию типа отправленных хедеров, списка ошибок, использования памяти(а это уже вторичный функционал).

С помощью xdebug вы можете к примеру задавать через ide'шку точки останова, где выполнение php кода будет останавливаться и через ту же ide смотреть значения нужных вам переменных, выполнять код пошагово, причем можно даже на удаленном сервере.

Это основное назначение. И я здесь не вижу необходимости и способов интеграции с фреймворком, кроме как вывести разного рода мелочи типа использования памяти.
Я Вас понял. Просто не работал с это библиотекой и не знаю её принципов. Посмотрю на досуге.
Если у вас есть время и желание, то думаю все-таки вам стоит посмотреть. Т.к. возможностей там много (смотрите ниже я писал и на хабре тоже есть несколько статей по теме).
Вы не правы. У xdebug очень богатый функционал. Который можно поделить на 3 части.
1. Удаленная отладка — это то про что вы говорите.
2. Весьма навороченный профайлер (собранный лог можно анализировать в специальных программах).
3. Более информативный вывод ошибок (то о чем в посте). Вывод можно настраивать (куча всяких настроек).

Но я наверняка уверен, что интегрировав в Yii можно будет добиться еще больших результатов.
Это вы сами закастомайзили дизайн yii-debug-toolbar'а или он такой в новых версиях? Неплохо выглядит.
Мне вот не хватает возможности включать/выключать тулбар get-переменной, которая потом сохраняется в сессии, надо будет как-то набросать такой костылик.

Еще очень кстати была бы вкладочка с переменными, которые передаются во вьюшки, это правда придется в рендерер внедряться, но если это получится сделать к примеру миксином, который через конфиг можно будет присобачить к любому рендереру — было бы чудесно. (Может такое уже есть, тогда делитесь ссылкой)
Извиняюсь, насчет дизайна панельки — все ясно, я перепутал с этой штукой, которую и использую в своих проектах.
Кстати, можно было бы сравнить эти две панельки, интересно, у какой из них больше преимуществ.
Сегодня утром ставил yiidebugtb и моё личное мнение — сыровато.
yii-debug-toolbar более информативен и красив.
yiidebugtb на полтора года старше, так что я бы о нем не говорил «сыровато», но yii-debug-toolbar по крайней мере на скриншотах выглядит не менее интересно, это да.

А как вы решаете проблему с action'ами, которые отдают данные ajax'ом? (такие тулбары по идее должны все ломать)
Вот на выходных «допилил». Появилась еще одна панель которая выводит информацию о всех отрендеренныъ вьюшках, дамп переданных во вью данных и состояния контроллера(ов)/виджетов на момент рендеринга вьюшек. Теперь бы отзывы от общественности получить )
Раз дело зашло об инструментах для отладки под Yii, могу еще посоветовать www.yiiframework.com/extension/php-console/ для тех, кто использует Chrome (расширение для работы с phpConsole, аналог FirePhp, отправляет всю отладочную информацию в хедерах)
CWebLogRoute имеет параметр showInFireBug. Допилить класс для большей информативности и можно в фаербаг всё кидать.
Круто, спасибо! Не знал, что это в родном функционале, а я думаю: что за беда, почему же нигде не могу найти такое востребованное расширение, как logRoute под Firebug )
Так в принципе элементарная задача, ставим firephp и расширяем основной класс: перенаправляем вывод в консоль.
Спасибо всем за отзывы, критику и предложения. Ввиду дефицита времени в данный момент, инструмент получился достаточно скудный по функционалу, но в ближайшее время я планирую возобновить работу и добавить массу полезных вещей. Если у вас есть какие то идеи по улучшению этого инструмента — размещайте на GitHub, по мере возможности буду реализовывать.
Спасибо Вам за такое расширение.
Почему-то sql запросы не отображаются. Я делаю через CActiveDataProvider
Там в ссылке на расширение в каталоге расширений Yii закралась ошибка — лишняя точка в линке. Поэтому ссылка не работает. Подправьте пожалуйста.
Очень мешает тот факт, что расширение не работает, когда на странице есть JS ошибки.
yiidebugtb в таких случаях продолжает работать.
Спасибо, учту ваше замечание.
Если драйвер БД dblib, то упадет по эксепшену при попытке взять аттрибуты соединения, т.к. драйвер не поддерживает эту функцию. Это файл yii-debug-toolbar/panels/YiiDebugToolbarPanelSql.php строка 201. Предлагаю либо там добавить проверку на
'dblib' !== $connection->driverName
или обернуть все это дело в try{}catch
А можно по аналогии с ipFilter добавить фильтр по юзерам?
бывает что расширение подглючивает, и он выводит только линк для показа debug-toolbar, но самого тулбара так и не выводит.
для этого небольшой фикс в YiiDebugToolbarRoute.php:

    public function collectLogs($logger, $processLogs=false)
    {
        $startEndTime = $this->_endTime;
 
        parent::collectLogs($logger, $processLogs);
 
        if ($this->_endTime == $startEndTime) {
            $this->processLogs(null);
        }
    }
 
    protected function processLogs($logs)
    {
        $this->_endTime = microtime(true);
 
        // disable log route based on white list
        $this->enabled = $this->enabled && $this->checkContentTypeWhitelist();
        $this->enabled && $this->getToolbarWidget()->run();
    }
Если отладка производится на компьютере с динамическим IP, то удобно в конфигурации прописать так:
'ipFilters'=>array(
                        gethostbyname('XXX.dyndns-ip.com'),
                    ),

Или выбрать любого другого провайдера предоставляющего услугу динамической привязки. Выбор последнего у меня обусловлен только тем что его поддерживаем мой модем.

Единственное замечание если в настройках прописана строка константа с IP, то отключение YiiDebugToolbar можно делать только через 'enabled'=>YII_DEBUG, в случае же с gethostbyname лучше строку все же комментировать так же.
Меня вот что-то смущает один момент: а на продакшене 'enabled'=>YII_DEBUG же будет в false установлено и логирования вообще всего не будет. Это же ни есть хорошо?
На продакшене лучше использовать только нативное логирование пхп и только критических ошибок, дабы не нагружать основной процесс. Логирование на уровне фремворка включается только на dev и demo площадках.
Аха, а я почему-то думал, что логирование на уровне фреймворка будет полезно и для продакшена. Спасибо за разъяснение.
Sign up to leave a comment.

Articles