HCE Project DC service web UI  0.2
Hierarchical Cluster Engine DC service web UI
 All Classes Namespaces Files Functions Variables Pages
yii2-debug

Отладочная панель для Yii 1.1 портированная из Yii 2.

![Total Downloads](https://poser.pugx.org/zhuravljov/yii2-debug/downloads.png)

Использование

Необходимо скопировать исходники в /protected/extensions и дополнить конфиг своего проекта следующими настройками:

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

Настройка

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

  • enabled - включение/выключение дебаггера.
  • allowedIPs - список ip и масок, которым разрешен доступ к панели. По умолчанию `array('127.0.0.1', '::1'). -accessExpression- дополнительное условие доступа к панели. -logPath- путь для записи логов. По умолчанию/runtime/debug. -historySize- максимальное кол-во записанных логов. Более ранние логи будут удаляться. -highlightCode- подсветка кода. Подсвечиваются sql-запросы и php-массивы данных. Также параметрhighlightCodeможно настраивать для каждой панели отдельно. -moduleId - ID модуля для просмотра ранее сохраненных данных. По умолчаниюdebug. -showConfig- показывать или нет страницу с конфигурацией приложения. По умолчаниюfalse. -hiddenConfigOptions- список опций значения которых необходимо скрывать при выводе на страницу с конфигурацией приложения. По умолчанию скрываются свойстваusername иpasswordкомпонентаdb. -internalUrls- использование внутренних роутов для urlManager -panels` - список подключенных к отладчику панелей.

Каждую подключаемую к отладчику панель так-же можно конфигурировать. Например:

```php 'debug' => array( 'class' => 'ext.yii2-debug.Yii2Debug', 'panels' => array( 'db' => array( // Отключить подсветку SQL 'highlightCode' => false, // Отключить подстановку параметров в SQL-запрос 'insertParamValues' => false, ), ), ), ```

Для каждой панели доступен callback-параметр filterData. Он дает возможность обработать массив данных перед сохранением этих данных в лог. Это может быть полезно в том случае, когда в данных проходит какая-то секретная информация, и ее нужно каким-то образом экранировать либо вообще изъять из массива.

Пример:

```php 'debug' => array( 'class' => 'ext.yii2-debug.Yii2Debug', 'panels' => array( 'db' => array( 'filterData' => function($data){ // Обработка return $data; } ), ), ), ```

Будьте осторожны с изменением структуры данных. Это может стать причиной ошибок при просмотре.

Подключение собственных панелей

Необходимо разработать свой класс унаследовав его от Yii2DebugPanel, например:

```php class MyTestPanel extends Yii2DebugPanel { // Имя вашей панели, выводится в меню отладчика public function getName() { return 'Name'; }

// Функция должна возвращать HTML для вывода в тулбар // Данные доступны через свойство $this->data public function getSummary() { return ''; }

// Функция должна вернуть HTML с детальной информацией // Данные доступны через свойство $this->data public function getDetail() { return ''; }

// Функция должна вернуть массив данных для сохранения в лог public function save() { return array(); } } ```

И подключить его в конфиг:

```php 'panels' => array( 'test' => array( 'class' => 'path.to.panel.MyTestPanel', // ... ), ), ```

Dump переменных

С помощью метода Yii2Debug::dump() можно писать в лог переменные любого типа, и просматривать их на странице "Logs".

Различные приёмы

Status Code

Если в вашем проекте используется PHP < 5.4, то для записи http-кода в логи и вывода его на панель можно воспользоваться следующей настройкой:

```php 'panels' => array( 'request' => array( 'filterData' => function($data){ if (empty($data['statusCode'])) { if (isset($data['responseHeaders']['Location'])) { $data['statusCode'] = 302; } else { $data['statusCode'] = 200; } } return $data; }, ), ), ```

Таким образом 302-й код определяется косвенно, исходя из наличия заголовка Location. Коды 4xx и 5xx определяются расширением самостоятельно. В PHP 5.4 для определения http-кода расширение использует встроенную функцию http_response_code().