Компонент DebugPanel: Отладочная панель
Компонент DebugPanel позволяет добавить и вывести панель отладки на сайте.
Настройка компонента
Для вывода панели на странице необходимо прописать в конфигурационном файле сайта следующее:
// config/site.php <?php $this ... ->debug_panel ->enabled(true) ->get('') ->end
Где
- enabled (true/false) - включить / отключить панель.
- get() - get-параметр, который добавляется к адресу, по которому будет загружена панель.
- если параметр не указан в настройках совсем, то панель будет подключена, но не будет отображаться на сайте. Панель будет доступна, если в урл добавить следующий параметр: .../?TAO_DEBUG_PANEL=1 .
- если в настройках указать ->get('') - панель будет сразу выведена при загрузке страницы. Убрать панель можно, отключив ее в настройках (enable =>false ).
- можно указать свой параметр. Например:
// app/config/site.php <?php $this ... ->debug_panel ->enabled(true) ->get('new_panel') ->end
Панель будет загружаться по адресу с get-параметром .../?new_panel=1.
Блоки
Отладочная панель состоит из 9 блоков:
- TAO - отображает текущую версию фреймворка ТАО. Во сплывающей области выводятся ссылки на страницу для скачивания последней версии и страницу с документацией на фреймворк.
- PHP - отображает текущую версию PHP. По ссылке можно просмотреть полную информацию (реализована функция phpinfo()).
- Status - показывает код статуса ответа сервера на запрос страницы, текущие на данный момент роутер, контроллер, экшен.
- Stats - отображает время работы скрипта, общее количество памяти / максимальное количество памяти, выделенное на работу скрипту.
- DB - выводит количество запросов, сделанных к базе данных при загрузке страницы, общее время обращения. При клике на блок выводится таблица со всем списком запросов и временем на каждый запрос.
- Templates - отображает количество загружаемых шаблонов и частей (вложенностей, partials) с указанием времени загрузки. По клику выводится полный список шаблонов, частей (вложенностей, partials), хелперов с описанием имени, пути, времени загрузки.
- Cache - отображает информацию о кешировании: количество вызовов и время. По клику выводится полный список с описанием методов, аргументов, время кэширования.
- Messages - выводит сообщения, добавленные самим разработчиком в коде.
- Config - выводит данные о настройках конфигурации.
Messages
Блок предназначен для вывода различных сообщений, значений переменных. В компоненте есть метод Component_DebugPanel::message($message, $title), позволяющий добавить сообщение в любое место кода. При этом сообщение будет выводиться только в соответствующем блоке на отладочной панели.
// где-то в коде Component_DebugPanel::message('Строка 1', 'var1');
В метод Component_DebugPanel::message($message, $title) необходимо передать сообщение ($message) и заголовок ($title).
- $title необходимо указывать в том случае, если нужно отметить сообщение. Сообщения можно вставлять под тем же заголовком, но менять содержимое. Тогда в блоке оно будет считаться как одно, а выводиться будет последнее изменение.
- $message - кроме текстовых сообщений, допускается вносить значения каких-либо переменных, массивов, методов.
Добавить свой блок
На панель отладки можно добавить свой блок. Сделать это можно двумя способами.
1. В компоненте есть класс Component_DebugPanel_Block, который обладает набором некоторых свойств и методов, позволяющих определить функциональность и вывод блока на панели.
У класса доступны для переопределения следующие методы:
- css_files() - переопределение массива путей для css-файлов.
- js_files() - переопределение массива путей для js-файлов.
- weight() - установить вес для изменения порядка вывода блока на панели. По умолчанию у всех блоков вес 0.
- render_button() - заголовок блока.
- render_content() - вывод контентной области (подгружается при клике по блоку).
- render_bubble() - вывод всплывающей области.
- action($path = ' ') - переопределение пути и экшена для блока. По умолчанию ведет на 404-страницу.
Например для блока PHP:
// app/components/DebugPanel/lib/Blocks/PHP.php public function action($path = '') { if ($path == 'phpinfo') { phpinfo(); die(); } return parent::action($path); }
Адрес страницы будет формироваться следующим образом: /debug-panel/$name/$path/, где $name - имя блока, $path - часть адреса, которая передается в action(). Для примера, выше, адрес страницы будет: /debug-panel/php/phpinfo/.
Чтобы добавить свой блок на отладочную панель, необходимо создать свой класс Component_DebugPanel_Blocks_MyClass, наследовать его от базового Component_DebugPanel_Block, переопределяя нужные методы; внести в файл настроек имя блока и класс. Например:
// app/components/DebugPanel/app/lib/Blocks/TestBlock.php Core::load('Component.DebugPanel.Block'); class Component_DebugPanel_App_Blocks_TestBlock extends Component_DebugPanel_Block { public function render_button() { return "<span>Тест</span>"; } public function render_bubble() { return "Тестовый пример"; } }
Теперь необходимо внести блок в настройки конфигурации. Если класс будет располагаться внутри компонента DebugPanel, то необходимо скопировать файл app/components/DebugPanel/config/blocks.php в папку app/config/, и добавить запись.
// app/components/DebugPanel/app/config/blocks.php return array( 'testblock' => 'Component.DebugPanel.App.Blocks.TestBlock', );
Если же, класс и конфигурационный файл будут находится в другом компоненте (не в DebugerPanel), то файл настроек необходимо переименовать в debug_panel.php.
// app/components/MyComponent/app/config/debug_panel.php return array( 'blocks' => array( 'testblock' => 'Component.DebugPanel.App.Blocks.TestBlock', ), );
2. Добавить блок, используя метод компонента add_block($name, $class).
Где
- $name - название блока.
- $class - имя класса, описывающего этот блок.
// где-то в коде Component_DebugPanel::add_block('testblock', 'Component.DebugPanel.App.Blocks.TestBlock');