- •Оглавление
- •I. Инструментарий
- •II. Шаблоны проектирования
- •1. Простой
- •2. Шаблонная функция
- •3. Метод буферизации
- •III. Фрэймворк Kohana
- •1. Знакомство с Kohana
- •2. Роутинг
- •7. Взаимодействие модели, контроллера и шаблона
- •8. Создание новых классов и подключение сторонних библиотек
- •9. Конфигурирование
- •10. Языковые файлы
- •11. Системные сообщения
- •12. Хелперы
- •Мы можем использовать любые строковые функции php, добавляя к ним класс utf8
- •13. Этапы создания проекта
- •14. Виджеты
- •Сложные запросы
- •17. Модуль orm
- •Т.Е. Если мы вторым параметромне указываем идендификатор, мы добавляем запись, если указываем – мы обновляем строку с указанным идентификатором.
- •Но если мы попытаемся удалить запись, которой не существует, то увидим сообщение об ошибке. Чтобы избавиться от этой ошибки, есть специальный метод, который проверяет, возвращает ли запрос результат.
- •Если метод возвращает true, то происходит удаление записи.
- •Если таблица userimage связана стаблице user связью belongs_to, то таблица user связана с таблицей userimage связью has_many.
- •19. Использование orm в виджетах
- •20. Модуль Auth
- •21. Модуль Image
- •22. Совместное использование модуля Image и js-скриптов, об-рабатывающих изображения.
- •Далее в контроллер добавим функцию для работы с изображениями.
- •В контроллере произведем вставку изображений в папку и запись в таблицу.
- •Чтобы вывести постраничную навигацию, например, на страницу пользователей, нам сперва нужно узнать общее количество пользователей, которое впоследствии нужно передать в параметр total_items.
- •А вот и сам экшн:
- •Как видно из листинга в шаблон мы передали переменную pagination, в которой будет находиться шаблон вывода ссылок на страницы. Осталось только вывести данную переменную в шаблоне.
- •Если в роуте используются параметры controller, action, directory либо id, то их необходимо передавать в класс pagination в метод route_params().
- •24. Операции crud. Разработка системы администрирования.
- •25. Модуль кэширования
- •В kohana также имеется отдельный модуль cache. Для его подключения необходимо раскомментировать нужную строку в файле bootstrap.Php
- •После подключения модуля необходимо скопировать из папки с модулем конфигурационный файл и переместить его в папку config/ в конфигурационном файле cache.Php имеется несколько групп настроек.
- •Каждая группа настроек работает со своим драйвером для кэширования. В зависимости от выбранного типа настроек, закэшированные файлы будут храниться либо в памяти компьютера, либо в других файлах.
- •28. Многоуровневые комментарии. Алгоритм NestedSets. Модуль orm-mptt
- •29. Модальное окно на ajax
- •30. Парсинг
- •31. Отладка
- •32. Профилирование
- •33. Документация kohana, модуль Userguide
- •34. Модуль Codebench
- •36. Другие модули Kohana
- •37. Состояние проекта
- •38. Дополнительное конфигурирование
- •39. Уязвимость Kohana
- •Установка yii
- •2. Структура yii
- •3. Конфигурирование yii, файл config/main.Php
- •4. Маршрутизация
- •7.Подключение шаблонов
- •8. Полезное.
- •9. Модель. Работа с базой данных.
- •11. Валидация
- •1. Определение класса модели
- •2. Определение правил проверки
- •4. Стандартные правила валидации
- •12. Конструктор форм
- •13. Хелперы форм
- •14. Обработка изображений
- •15. Постраничная навигация и cActiveDataProvider
- •16. Виджеты
- •17. Создание виджета круговой диограммы
- •18. Виджет cMenu
- •19. Хлебные крошки. Виджет cBreadcrumbs
- •20. Виджет cDetailView
- •21. Виджет chml, хелперы html
- •22. Виджет cListView
- •23. Виджет cGridView, таблица администратора
- •25. Модули
- •26. Авторизация
- •27. Контроль доступа на основе ролей
- •V. Краткий обзор и сравнение фрэймворков yii и Kohana
- •VI. Система контроля версий
- •Синхронизация локальных файлов с репозиторием
- •Открытие проекта Mercurial в среде ide
- •Получение файлов из репозитория
- •Импорт файлов в репозиторий
- •Изменение файлов исходного кода
- •Просмотр изменений в редакторе исходного кода
- •Просмотр информации о состоянии файла
- •Метки и условные цвета
- •Ярлыки состояния файлов
- •Окно контроля версий
- •Сравнение редакций файлов
- •Внесение изменений в локальную рабочую копию
- •Переходы между различиями в сравниваемых файлах
- •Изменение критериев просмотра
- •Слияние редакций файлов
- •Фиксация исходных файлов в репозитории
- •Обновление локальных копий
- •Выполнение фиксации
- •Обновление проблем
- •Выгрузка локальных изменений в общий репозиторий
- •Клонирование репозитория Git из GitHub с использованием протокола ssh
- •VI. Обзор рынка
- •VII. Программа курса php для продвинутых
- •Обзор рынка.
- •Php для продвинутых
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-запросы:
SQL-запросы с описанием
SQL-запросы выделенные цветом
Кэш
Серверные переменные
Роуты
Подключаемые файлы
Прочие переменные
По умолчанию, данный модуль совместим с FireBug. Эту же информацию мы можем получать из FireBug. Для этого необходимо в вызываемом контроллере создать метод after(), и в нем вызвать ProfilerToolbar::firebug().
Взаимодействие с firebug. Листинг 35.2 |
public function after(){ parent::after(); ProfilerToolbar::firebug(); } |
Далее:
перезапускаем firefox,
нажимаем F12 (открытие firebug),
заходим в консоль firebug и обновляем его (cntrl + F5).
Увидим:
Также следует отметить, что после подключения данного модуля, изменится формат вывода ошибок:
