- •Оглавление
- •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 для продвинутых
7. Взаимодействие модели, контроллера и шаблона
Рассмотрим контроллер, обрабатывающий данные модели и передающий эти данные в шаблон.
Пример контроллера. Листинг 7.1 |
class Controller_Index extends Controller_Template { //определение перемнной шаблона public $template = ‘v_index’;
public function before() { parent::before(); $this->template->title = ‘Интернет-магазин’; }
public function action_index() { $this->template->content = ‘Главная страница’; }
public function action_catalog() { $products = Model::factory(‘catalog’) ->all_products();
$this->template->content = View::factory(‘v_catalog’, array(‘products’ => $products,) ); }
} |
8. Создание новых классов и подключение сторонних библиотек
Новые классы будем помещать в папку classes.
Создание нового класса. Листинг 8.1 |
<?php defined(‘SYSPATH’) or die(‘No direct script access.’); class Myclass { public static function myresult() { return “Вызван метод myresult”; } } |
Обратите внимание на первую строчку, где после открытия php идет проверка на существование константы SYSPATH.
Чтобы в контроллере вызвать данный класс, мы пропишем:
Вызов метода. Листинг 8.2 |
public function action_index() { echo Myclass::myresult; }
|
Двойное двоеточие указывает на то, что метод myresult объявлен статичным, что позволяет вызывать данный метод без создания экземпляра класса.
Для подключения сторонних библиотек, саму библиотеку поместим в папку classes. Далее с помощью функции require и констант APPPATH (папка aplication) и EXT (расширение файла .php) подключим загрузочный файл библиотеки.
Рассмотрим подключение библиотеки phpQuery:
Подключение сторонних библиотек. Листинг 8.3 |
public function action_test() { require APPPATH.'classes/phpQuery/phpQuery/phpQuery'.EXT; $habrablog = file_get_contents('http://127.0.0.1/obmenka/'); $document = phpQuery::newDocument($habrablog); $hentry = $document->find('body'); echo $hentry; } |
9. Конфигурирование
В kohana предусмотрена папка config, где можно создавать конфигурационные файлы настроек, в которых хранятся переменные настроек сайта: названия сайта, title, keyword, description – по умолчанию, переменные для подключения к базе данных и т.д., а также конфигурационные настройки подключаемых модулей, (модуль для работы с базой данных, модуль постраничной навигации и т.д.). Почти все модули имеют конфигурационные файлы, которые нужно будет копировать и вставлять в папку config.Сперва Kohana ищет файл настроек в папке config, если в данной папке настройки для модуля не нашлись, то тогда используются настройки из папки с модулем.
Конфигурационные файлы для каждого модуля будем рассматривать отдельно, при изучении данного модуля. Сейчас рассмотрим общий конфигурационный файл.
Файл настроек conf.php. Листинг 9.1 |
<?php defined(‘SYSPATH’) or die(‘No direct script access.’); return array( ‘site_name’ =>‘Школа PHP’, ‘site’ => array( ‘keyword’ =>‘Школа web, школа php’, ‘description’ =>‘Здесь вы можете скачатькниги по PHP’, ‘title’ =>‘Школа PHP’ ) ); |
Для того чтобы вызвать в контроллере данные переменных настроек, пропишем следующее:
Вызов подключаемого файла настроекconf.php. Листинг 9.2 |
public function action_index() { $config = Kohana::$config->load(‘conf’); $value = $config->get(‘site’); print_r($value); }
|
Таким образом, из файла conf.php, а в переменную $value поступает массив. Для создания массива мы использовали метод get().
Для того чтобы изменить значение переменной в файле конфигурирования, передадим новые значения через метод set()
Переопределение переменных файла конфигурации. Листинг 9.3 |
public function action_index() { $config= Kohana::$config->load(‘conf’); $config->set(‘var’, ‘new_value’); }
|
Еще один вариант вывода
Альтернативный вариант вызова файла конфигурации. Листинг 9.4 |
Файл конфигурации database.php Return array( ’default’=>array( ’connection’=> array( ’hostname’=>‘localhost’ ) ) );
// Вызоввэкшне: $hostname= Kohana::$config->load (‘database.default.connection.hostname’);
|
Данный вариант вывода будет эквивалентен следующему:
Вызов файла конфигурации с использованием метода get(). Листинг 9.5 |
$config= Kohana::$config->load(‘database’)->get(‘default’); $hostname= $config[‘connection’][‘hostname’];
|
Очевидно, что вызов значений через точки (без использования метода get()) является более компактным, но при этом и намного медленнее, чем вызов get(). Вызов значений без get() может быть полезным тогда, когда выводится только одна конкретная переменная.
