- •Оглавление
- •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 для продвинутых
Установка yii
Скачиваем YII по следующей ссылке: http://www.yiiframework.com/download/
После установки Yii откроем окно браузера и перейдем по адресу http://www.example.com/yii/requirements/index.php. Мы увидим анализатор требований, поставляемый вместе с релизом Yii. Для блога кроме того, что требуется самому фреймворку для доступа к БД SQLite нам понадобятся расширения PHP pdo и pdo_sqlite.
Далее открываем консоль и, перейдя с помощью команды cd в папку framework, выполняем следующую команду:
php -f yiic webapp полный/путь/к/папке
-
Установка YII. Листинг 1.1
% /wwwroot/yii/framework/yiic webapp /localhost/yii
Create a Web application under '/localhost/yii'? [Yes|No]y
…
Входной скрипт
Раcсмотрим входной файл фрэймворка. Это файл index.php
-
Index.php. Листинг 1.2
<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($yii);
Yii::createWebApplication($config)->run();
Основные классы фрэймворка подключаются через переменную $yii. Переменная $config – это файл настроек.
2. Структура yii
Assets – папка для временных файлов, необходимых самому фрэймфорку,
CSS – папка для стилей,
Framework – непосредственно, сам фрэймворк,
Images – папка для изображений,
Protected – рабочая дирректория,
Themes – темы оформления.
Основная папка, с которой нам придется работать, - это папка Protected. Рассмотрим структуру этой папки.
Commands – папка для консольных приложений, для управления фрэймворком с помощью консоли.
Components – содержит компоненты.
Config – содержит конфигурационные файлы.
Controllers – папка для хранения контроллеров.
Data – папка для хранения данных базы данных SQLite
Extentions – папка для расширений фрэймворка.
Messages – папка для хранения системных сообщений. В том числе необходима для хранения ассоциаций переводов в мультиязычных приложениях.
Migrations – папка для отслеживания изменений в базе данных.
Models – папка моделей.
Runtime – папка для хранения временных файлов.
Tests – используется для тестирования приложений.
Vendor – папка для подключения модулей сторонних фрэйворков.
Views – шаблоны проетка.
3. Конфигурирование yii, файл config/main.Php
Подключение к базе данных, включение русского языка, как и определение других конфигурационных переменных, осуществляется в файле config/main.php.
Для подключения русского языка добавим ассоциативный массив language с соответствующим именем.
-
Подключение русского файла переводов в файле config/main.php. Листинг 3.1
'language'=>'ru',
Меняем кодировку всего приложения. Для этого в файле .htaccess пропишем следующее:
-
Изменение кодировки для всего проекта, файл .htaccess. Листинг 3.2
addDefaultCharset utf-8
Сейчас системные сообщения будут выводиться на русском языке.
Далее нам необходимо раскомментировать генератор кода gii
-
Раскомментированный генератор кода, gii. Листинг 3.3
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'123',
'ipFilters'=>array('127.0.0.1','::1'),
),
Для настройки маршрутов должен быть раскомментирован UrlManager
-
Раскомментированный urlManager. Листинг 3.4
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
И, наконец, в массиве params, изменим значение элемента adminEmail.
Подключение базы данных
-
Подключение базы данных. Листинг 3.5
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=test',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
Создание пароля для генератора кода GII
-
Пароль для GII. Листинг 3.6
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'SECRET',
'ipFilters'=>array('127.0.0.1','::1'),
),
