- Начало
- Основы
- Работа с формами
- Работа с БД
- Кэширование
- Расширение Yii
- Тестирование
- Специальные темы
- Автоматическая генерация кода
- Красивые адреса URL
- Аутентификация и авторизация
- Темы оформления и скины
- Журналирование
- Обработка ошибок
- Веб-сервисы
- Интернационализация (I18N)
- Альтернативный язык шаблонов
- Консольные приложения
- Безопасность
- Улучшение производительности
- Генерация кода при помощи консоли (устаревшее)
Модель-Представление-Контроллер (MVC)
Yii использует шаблон проектирования Модель-Представление-Контроллер (MVC, Model-View-Controller), который широко применяется в веб-программировании.
MVC направлен на отделение бизнес-логики от пользовательского интерфейса, чтобы разработчики могли легко изменять отдельные части приложения не затрагивая другие. В архитектуре MVC модель предоставляет данные и правила бизнес-логики, представление отвечает за пользовательский интерфейс (например, текст, поля ввода), а контроллер обеспечивает взаимодействие между моделью и представлением.
Помимо этого, Yii также использует фронт-контроллер, называемый приложением (application), который выступает в роли контекста выполнения запроса. Приложение производит обработку запроса пользователя и передает его для дальнейшей обработки соответствующему контроллеру.
Следующая диаграмма отображает структуру приложения Yii:
Статическая структура приложения Yii

Типичная последовательность работы приложения Yii
Следующая диаграмма описывает типичную последовательность процесса обработки пользовательского запроса приложением:
Типичная последовательность работы приложения Yii

- Пользователь осуществляет запрос посредством URL
http://www.example.com/index.php?r=post/show&id=1, а веб-сервер обрабатывает его, запуская выполнение скрипта инициализацииindex.php; - Скрипт инициализации создает экземпляр приложения и запускает его на выполнение;
- Приложение получает подробную информацию о запросе пользователя от компонента приложения
request; - Приложение определяет запрошенные контроллер
и действие при помощи компонента
urlManager. В данном примере контроллером будетpost, относящийся к классуPostController, а действием —show, суть которого определяется контроллером; - Приложение создает экземпляр запрашиваемого контроллера для дальнейшей обработки запроса пользователя. Контроллер определяет
соответствие действия
showметодуactionShowв классе контроллера. Далее создаются и применяются фильтры (например, access control, benchmarking), связанные с данным действием, и, если фильтры позволяют, действие выполняется; - Действие считывает из базы данных модель
Postс ID равным1; - Действие формирует представление
showс данными моделиPost; - Представление получает и отображает атрибуты модели
Post; - Представление выполняет некоторые виджеты;
- Сформированное представление добавляется в макет страницы;
- Действие завершает формирование представления и выводит результат пользователю.

