mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
46 lines
4.9 KiB
Plaintext
46 lines
4.9 KiB
Plaintext
Модель-Представление-Контроллер (MVC)
|
||
======================================
|
||
|
||
Yii использует шаблон проектирования Модель-Представление-Контроллер (MVC, Model-View-Controller),
|
||
который широко применяется в веб-программировании.
|
||
|
||
MVC предназначен для разделения бизнес-логики и пользовательского интерфейса, чтобы разработчики могли легко изменять
|
||
отдельные части приложения, не затрагивая другие.
|
||
В архитектуре MVC модель предоставляет данные и правила бизнес-логики, представление отвечает за пользовательский
|
||
интерфейс (например, текст, поля ввода), а контроллер обеспечивает взаимодействие между моделью и представлением.
|
||
|
||
Помимо этого, Yii использует фронт-контроллер, называемый приложением (application),
|
||
который инкапсулирует контекст обработки запроса. Приложение собирает информацию
|
||
о запросе и передает её для дальнейшей обработки соответствующему контроллеру.
|
||
|
||
Следующая диаграмма отображает структуру приложения Yii:
|
||
|
||

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

|
||
|
||
1. Пользователь осуществляет запрос посредством URL `http://www.example.com/index.php?r=post/show&id=1`,
|
||
и веб-сервер обрабатывает его, запуская скрипт инициализации `index.php`.
|
||
2. Скрипт инициализации создает экземпляр [приложения](/doc/guide/basics.application) и запускает его на выполнение.
|
||
3. Приложение получает подробную информацию о запросе пользователя от [компонента приложения](/doc/guide/basics.application#application-component) `request`.
|
||
4. Приложение определяет запрошенные [контроллер](/doc/guide/basics.controller)
|
||
и [действие](/doc/guide/basics.controller#action) при помощи компонента `urlManager`.
|
||
В данном примере контроллером будет `post`, относящийся к классу `PostController`, а действием — `show`, суть которого
|
||
определяется контроллером.
|
||
5. Приложение создаёт экземпляр запрашиваемого контроллера для дальнейшей обработки запроса пользователя. Контроллер определяет
|
||
соответствие действия `show` методу `actionShow` в классе контроллера. Далее создаются и применяются фильтры
|
||
(например, access control, benchmarking), связанные с данным действием, и, если фильтры позволяют, действие выполняется.
|
||
6. Действие считывает из базы данных [модель](/doc/guide/basics.model) `Post` с ID равным `1`.
|
||
7. Действие подключает [представление](/doc/guide/basics.view) `show`, передавая в него модель `Post`.
|
||
8. Представление получает и отображает атрибуты модели `Post`.
|
||
9. Представление подключает некоторые [виджеты](/doc/guide/basics.view#widget).
|
||
10. Сформированное представление вставляется в [макет страницы](/doc/guide/basics.view#layout).
|
||
11. Действие завершает формирование представления и выводит результат пользователю.
|
||
|
||
<div class="revision">$Id: basics.mvc.txt 3321 2011-06-26 12:54:22Z mdomba $</div> |