Компонент 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');

09.02.2015
Все статьи