0 follower

Модель-Представление-Контроллер (MVC)

Yii использует шаблон проектирования Модель-Представление-Контроллер (MVC, Model-View-Controller), который широко применяется в веб-программировании.

MVC направлен на отделение бизнес-логики от пользовательского интерфейса, чтобы разработчики могли легко изменять отдельные части приложения не затрагивая другие. В архитектуре MVC модель предоставляет данные и правила бизнес-логики, представление отвечает за пользовательский интерфейс (например, текст, поля ввода), а контроллер обеспечивает взаимодействие между моделью и представлением.

Помимо этого, Yii также использует фронт-контроллер, называемый приложением (application), который выступает в роли контекста выполнения запроса. Приложение производит обработку запроса пользователя и передает его для дальнейшей обработки соответствующему контроллеру.

Следующая диаграмма отображает структуру приложения Yii:

Статическая структура приложения Yii

Статическая структура приложения Yii

1. Типичная последовательность работы приложения Yii

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

Типичная последовательность работы приложения Yii

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