Предисловие

В этом цикле статей я хочу рассказать о таком замечательном фреймворке, как yii. Предполагается, что у читателя есть некоторый навык работы с php5, особенно с его объектно-ориентированной частью. Я буду стараться охватить как можно больше разных аспектов создания веб-приложений на базе yii, добавляя от себя разные тонкости и хитрости; но не ждите от меня копипаста документации или api. И то и другое Вы можете найти на официальном сайте.

Введение

Что такое Yii?

Yii это свободный(распространяется под new BSD licence) высокопроизводительный объектно-ориентированный расширяемый php-фрэймворк для разработки веб-приложений.

Зачем он нужен?

Для удобной разработки веб-приложений и чтобы не изобретать сто раз изобретенный велосипед.

Основные особенности :

  • MVC-архитектура
  • Работа с базами данных
  • Поддержка кэширования на разных уровнях
  • Большое количество встроенных компонентов
  • Возможность простого подключения сторонних библиотек
  • Интеграция с jQuery

Подготовка:

Системные требования:

  • Веб-сервер(рекомендуется Apache)
  • PHP версии не ниже 5.1.0
  • PDO-совместимая СУБД (MySql, PostgreSQL, SqLite, Microsoft SQL, Oracle8) и соответствующее php-расширение для её поддержки.

Рекомендуемые расширения для php:

  • gd – для работы с графикой.
  • mcrypt – для функций кодирования.
  • MemCache или APC – для кэширования, ускорения работы.

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

Для домашнего тестирования на linux можно установить пакеты из стандартных репозитариев.Если же Вы предпочитаете на windows, могу порекомендовать в качестве готового решения denwer.

Для пользователей денвера:

(В данном случае, Z: это диск, монтируемый денвером)
1. Для начала прописываем в переменные окружения путь  Z:\usr\local\php5\
2. Открываем /usr/local/php5/php.ini, ищем строчку extension_dir = «/usr/local/php5/ext», заменяем на extension_dir = «Z:\usr\local\php5\ext»
3. session.save_path = «/tmp» на session.save_path = «Z:\tmp»

Установка:

На момент написания статьи, последняя стабильная версия была 1.1.0. Скачать её можно в виде архива по адресу  http://yiiframework.com/download
Вся установка сводится к распаковке содержимого архива.Для начала рекомендую распаковать всё в директорию доступную из веб и открыть папку requirments в браузере, чтобы убедиться в наличии всех необходимых компонентов.

Для создания приложения необходимо использовать коммандную строку(ssh при удалённом доступе). Нужно запустить файл yiic.bat(для windows) или yiic(для linux и других unix-based систем) с параметрами webapp /full/path/to/new/wbebapp/.
Например :

$ /var/www/framework/yiic webapp /var/www/testing

Убедитесь, что у вас есть права записи в директорию, где Вы хотите создать веб-приложение и она доступна из web. Можно зайти в нее через браузер и увидеть возможности, предоставлямые yii «из коробки».

Практикой мы займемся в следующей статье, а теперь немного теории.

Модель – Представление – Контроллер(MVC) – это модульная архитектура, применяющийся в веб-программировании(в частности и в yii). Она направлена на разделение логики(контроллер), управления данными(модель) и пользовательского интерфейса(представление) с целью возможности изменять одни части не внося изменения в другие.

Основные части, из которых состоит yii:

В yii имена всех системных классов начинается с перфикса C , с целью недопущения коллизии имён. По этому, пожалуйста, воздержитесь от использования этого префикса в своих классах.

Входной файл
Входной файл(обычно index.php) это единственный скрипт, с которым контактирует пользователю. Вобщем-то, всё что он делает, это читает конфигурацию и создаёт экземпляр класса CWebApplication.
Приложение(application)
Приложение(экземпляр класса CWebApplication) обрабатывает запрос пользователя, выполняет роутинг и передаёт его на исполнение соответствующему контроллеру.
Контроллер(controller)
Контроллер(экзэмпляр класса CController или производного от него) определяет основную логику приложения, взаимодействует с моделями и отображениями. Контроллеры обычно находятся в папке /protected/controllers. По соглашению, класс контроллера и имя файла с ним : NameController.php
Действие(action)
Действие это тип действия, выполняемого пользователем, например просмотр статьи в блоге или отправка комментария. Обычно является методом контроллера(вида actionName), но может быть вынесенно в отдельный класс.
Модель (model)
Модель представляет собой сущность данных. Например таблица в базе данных(CActiveRecord) или форма на веб-странице(CForm). Она занимается непосредственной обработкой данных: созданием, получением, изменением. Также представляет интерфейс доступа к валидаторам(validator), проверяющим корректность введённых пользователем данных. Модели находятся в папке /protected/models. Модель обычно имеет имя, соответствующее таблице в бд, которую она представляет.
Представление(view)
Представление генерирует готовые части страницы, отдаваемой пользователю.Оно не использует логики, кроме как условий и циклов. Представления для каждого контроллера обычно раздельны и хранятся в /protected/views/controllername/.
Макет (layout)
Макет это специальное представление для вставки других представлений. Обычно он содержит части пользовательского интерфейса, используемого другими представлениями. Например, основной макет может содержать в себе шапку и подвал страницы, места для подключения других представлений и виджетов. Макеты храняться в /protected/views/layouts. По умолчанию используется макет main.php.
Виджет(widget)
Виджет это компонент для генерации самодостаточного элемента пользовательского интерфейса(например, верхнее меню в тестовом приложении). В zii (библиотеке расширений, поставляемых вместе с yii) имеется большое количество готовых виджетов.
Компонент(component)
Представляет сущность какого-либо аспекта веб-приложения. Например, авторизация пользователей. В yii много готовых компонентов, которые могут использоваться как в готовом виде, так и расширяться веб-разработчиками.
Модуль(module)
Модуль, это самодостаточная единица, состоящая из контроллеров, моделей, отображений, и.т.д. Модули используются для разделения сайта на логические части, например форум и блог.

Заключение

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

И на последок хочу дать несколько полезных ссылок:

Оффициальный сайт (en)

Русскоязычное сообщество (ru)

Блог, посвящённый yii (ru)

В следующей статье:

В следующей статье мы познокомимся со внутренним устройством фреймворка, научимся делать собственные контроллеры, модели и отображения, изучим основы ActiveRecord.

Поделиться в FaceBookПоделиться ВКонтактеДобавить в TwitterПоделиться в Моём МиреСохранить закладку в GoogleОтправить в Живую ленту GoogleДобавить в Яндекс.ЗакладкиПоделиться в ОдноклассникахОпубликовать в LiveJournal