Безопасный инструмент для отладки/анализа приложений на основе Phalcon Framework.
/debugbar/open
.db
. Поддерживает только встроенную систему ORM PhalconentityManager
. Поддерживает только ORM Doctrinerouter
.view
.request
.- ConfigCollector: Отображает информацию о конфигурацииconfig
.session
.log
.cache
.mail
.Установка
php composer.phar require --dev snowair/phalcon-debugbar
Обновление
php composer.phar update snowair/phalcon-debugbar
Сохраните экземпляр приложения в службе app
:
// Сначала создайте $di экземпляр
$application = new Phalcon\Mvc\Application($di); // передайте $di как аргумент конструктора для Micro приложения также: new Phalcon\Mvc\Micro($di);
$di['app'] = $application; // Сохраните экземпляр приложения в службе app $di
Для запуска debugbar используйте следующий код до метода handle()
, например:
(new Snowair\Debugbar\ServiceProvider())->start();
// После запуска debugbar немедленно обработайте приложение.
echo $application->handle()->getContent();
Необязательно Включите Whoops, измените index.php
, после запуска debugbar добавьте следующий код:
(new \Snowair\Debugbar\Whoops\WhoopsServiceProvider($di));
Следующий код управления списками правил (ACL) применим для INVO:
public function beforeDispatch(Event $event, Dispatcher $dispatcher)
{
$auth = $this->session->get('auth');
if (!$auth){
$role = 'Guests';
} else {
$role = 'Users';
}
$controller = $dispatcher->getControllerName();
$action = $dispatcher->getActionName();
/* Debugbar start */
$ns = $dispatcher->getNamespaceName();
if ($ns == 'Snowair\\Debugbar\\Controllers') {
return true;
}
/* Debugbar end */
$acl = $this->getAcl();
$allowed = $acl->isAllowed($role, $controller, $action);
if ($allowed != Acl::ALLOW) {
$dispatcher->forward(array(
'controller' => 'errors',
'action' => 'show4i1'
));
$this->session->destroy();
return false;
}
}
```### Долговременное хранение данных
Дебажные данные каждого запроса могут быть сохранены для анализа системы.
* Для **file** драйвера, отладочные данные по умолчанию сохраняются в директории `Runtime/phalcon`. Если эта директория не существует, она будет автоматически создана. Вы можете указать другую директорию в конфигурационном файле.
* Для **mongodb** драйвера, требуется установка расширения **mongodb**, а также mongodb phplib: `composer require mongodb/mongodb`.
* Для **elastic** драйвера требуется установка phplib: `composer require elasticsearch/elasticsearch:some-version`.
### О базовой URI
Обратите внимание на настройку baseUri, ваш URI-сервис должен иметь правильную настройку baseUri. Затем:
* Если вы используете Apache, вам просто нужно добавить соответствующий `.htaccess` файл в директорию baseUri, как указано в официальной документации.
* Если вы используете Nginx, вам потребуется правильно настроить блок location, например:
```
location @rewrite {
# Замените 'baseuri' на фактическое значение baseUri вашего проекта
rewrite ^/baseuri/(.*)$ /baseuri/index.php?_url=/$1;
}
```
## Советы
### Использование внешнего файла конфигурации для удобства обновлений через composer
Скопируйте файл `config/debugbar.php` внутри пакета в каталог конфигурации вашего проекта, затем отредактируйте его и используйте следующую команду:
(new Snowair\Debugbar\ServiceProvider('путь_до_вашего_файла_конфигурации_debugbar'))->start();
\PhalconDebug::startMeasure('start-1', 'время выполнения'); // startMeasure(идентификатор внутренней переменной для остановки меры, метка)
\PhalconDebug::addMeasurePoint('начало'); // Измерение времени с последней точки замера до настоящего момента.
\PhalconDebug::addMessage('это сообщение', 'метка'); // Добавление сообщения с использованием пользовательской метки.
\PhalconDebug::info($var1, $var2, $var3, ...); // Добавление множества сообщений за один раз. Смотрите PSR-3 для других методов названий (debug, notice, warning, error, ...)
\PhalconDebug::addMessageIfTrue('1 == "1"', 1 == '1', 'метка_пользователя'); // Добавляет сообщение только если второй параметр истинен
\PhalconDebug::addMessageIfTrue('не будет показано', 1 == '0');
\PhalconDebug::addMessageIfFalse('1 != "0"', 1 == '0'); // Добавляет сообщение только если второй параметр ложен
\PhalconDebug::addMessageIfNull('условие является null', Null); // Добавляет сообщение только если второй параметр является null
\PhalconDebug::addMessageIfEmpty('условие является пустым', $condition); // Добавляет сообщение только если второй параметр пустой
\PhalconDebug::addMessageIfNotEmpty('условие не является пустым', $condition = [1]); // Добавляет сообщение только если второй параметр не пустой
\PhalconDebug::addException(new \Exception('ах, ошибка'));
\PhalconDebug::addMeasurePoint('окончание');
\PhalconDebug::stopMeasure('start-1'); // stopMeasure(идентификатор внутренней переменной для остановки меры)
### Функции шаблонов Volt
addMessage
addMessageIfTrue
addMessageIfFalse
addMessageIfNull
addMessageIfEmpty
addMessageIfNotEmpty
addException
addMeasurePoint
startMeasure
stopMeasure
debug/info/notice/warning/error/emergency/critical
#### Примеры отправки сообщений в шаблонах Volt
{{ debug(var1, var2) }} {{ info(var1, var2) }} {{ addMessageIfTrue('$var === true', var) }}
### Отладка многомодульных приложений
Мы считаем следующие практики хорошими:
1. Название сервиса кэширования должно содержать слово `cache`.
2. Название сервиса базы данных должно содержать слово `db` — начинаться или заканчиваться этим словом.
3. Для открытия независимого окна отладки модуля можно использовать адрес `/_debugbar/open?m=modulename`.
Отладочная панель может поддерживать многомодульные приложения без каких-либо специальных настроек.
Если ваши службы имеют другое название, вам потребуется привязать службу кэширования или базы данных к отладочной панели вручную. Пример привязки представлен ниже:
// service.php $di->set('my-db-2', function(...) ); $di->set('huan-cun', function(...) ); if ($di->has('debugbar')) { $debugbar = $di['debugbar']; $debugbar->attachDb('my-db-2'); $debugbar->attachCache('huan-cun'); }
### Как действовать при возникновении проблем
1. Последовательно отключайте каждый collector в конфигурационных файлах до тех пор, пока проблема не исчезнет. Это поможет выявить конкретный collector, вызывающий проблему. Затем создайте issue на git@osc с подробным описанием проблемы.
2. Создайте issue на git@osc с описанием проблемы.### Скриншоты
* * *

* * *

* * *

* * *

* * *

* * *

* * *

* * *

* * *

* * *

* * *

Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )