Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

33. Документация kohana, модуль Userguide

Обратиться к документации kohana мы можем и без выхода в интернет. Для этого в файле bootstrap.php необходимо раскомментировать модуль Userguide:

Раскомментирование модуля usergude. Листинг 33.1

Kohana::modules(array(

'userguide' => MODPATH.'userguide', // User guide and API

));

После чего по запросу 127.0.0.1/имя_сайта/guide будет доступна вся документация по текущей версии kohana:

34. Модуль Codebench

Данный модуль будет полезен при разработке высоконагруженных проектов, когда основным требованием является высокая производительность. Увеличение производительности проекта достигается за счет оптимизации скрипта.

Т.к. одна и та же задача может решаться несколькими способами, причем разные способы обладают разной производительностью, то перед программистом стоит задача выбора наиболее оптимального способа для решения поставленной задачи.

Подключение модуля codebench. Листинг 34.1

Kohana::modules(array(

'codebench' => MODPATH.'codebench', // Benchmarking tool

));

После чего, по запросу 127.0.0.1/имя_сайта/codebench, откроется следующая форма для тестирования классов:

С помощью данного модуля мы можем тестировать производительность как своих классов, так и стандартных системных. В папке modules/codebench/bench есть готовые примеры различных классов для тестирования функций.

Рассмотрим один из этих классов, с именем Ltrimdigits, который тестирует производительность между регулярным выражением и стандартной функцией phpltrim. Обе эти функции решают одну задачу, и нам необходимо определить, какая из них работает быстрее.

Стандартный класс модуля CodebenchLtrimdigits. Листинг 34.2

<?php defined('SYSPATH') or die('No direct access allowed.');

/**

* @package Kohana/Codebench

* @category Tests

* @author Geert De Deckere <geert@idoe.be>

*/

class Bench_LtrimDigits extends Codebench {

public $description = 'Chopping off leading digits: regex vs ltrim.';

public $loops = 100000;

public $subjects = array

(

'123digits',

'no-digits',

);

public function bench_regex($subject)

{

return preg_replace('/^\d+/', '', $subject);

}

public function bench_ltrim($subject)

{

return ltrim($subject, '0..9');

}

}

Где:

  • $description – описание работы класса

  • $loops – количество итераций (многократного выполения заданных функций)

  • $subjects – массив объектов, которые будут подставляться при выполнении каждой итерации.

Далее идут две функции, которые начинаются с префикса bench_.

Для того чтобы запустить тест, нам достаточно скопировать название этого класса и вставить его в форму:

После нажатия кнопки Run мы увидим, что быстрее оказалась функция bench_ltrim:

Собственные классы тестирования необходимо помещать в папку bench в каталоге application/classes.

35. ProfilerToolbar

ProfilerToolbar - это модуль для Коханы, который упрощает отладку приложений, написанных на этом PHP-фреймворке. Благодаря различной статистической и отладочной информации, процесс разработки становится проще и приятней для программиста.

Скачать данный модуль можно по ссылке https://github.com/Alert/profilertoolbar

После стандартной процедуры установки (распаковки архива в папку modules и подключения данного модуля в bootstrap.php) в одном из файлов шаблона (из папки views) необходимо вывести toolbar на экран:

Вывод ProfilerToolbar. Листинг 35.1

<html>

<body>

...

content

...

<?php ProfilerToolbar::render(true); ?>

</body>

</html>

Далее, после обновления страницы, увидим toolbar:

При клике на каждый из табов открывается окно расширенного таба:

  • SQL-запросы:

  1. SQL-запросы с описанием

  1. SQL-запросы выделенные цветом

  1. Кэш

  1. Серверные переменные

  1. Роуты

  1. Подключаемые файлы

  1. Прочие переменные

По умолчанию, данный модуль совместим с FireBug. Эту же информацию мы можем получать из FireBug. Для этого необходимо в вызываемом контроллере создать метод after(), и в нем вызвать ProfilerToolbar::firebug().

Взаимодействие с firebug. Листинг 35.2

public function after(){

parent::after();

ProfilerToolbar::firebug();

}

Далее:

  1. перезапускаем firefox,

  2. нажимаем F12 (открытие firebug),

  3. заходим в консоль firebug и обновляем его (cntrl + F5).

Увидим:

Также следует отметить, что после подключения данного модуля, изменится формат вывода ошибок:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]