mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
47 lines
4.5 KiB
Plaintext
47 lines
4.5 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> |