mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
53 lines
3.1 KiB
Plaintext
53 lines
3.1 KiB
Plaintext
Model-Widok-Kontroler (ang. Model-View-Controller, MVC)
|
|
===========================
|
|
|
|
Yii implementuje wzorzec projektowy model-widok-kontroler (MVC), który jest
|
|
powszechnie stosowany w programowaniu webowym. MVC ma na celu oddzielenie
|
|
logiki biznesowej od interfejsu użytkownika, biorąc pod uwagę to, że developer
|
|
może dzięki temu w łatwy sposób zmienić każdą część bez oddziaływania na inną.
|
|
W MVC model reprezentuje informacje (dane) oraz reguły biznesowe. Widok zawiera
|
|
elementy interfejsu użytkownika takie jak tekst, formularze. Kontroler zarządza
|
|
komunikacją pomiędzy modelem a widokiem.
|
|
|
|
Poza implementacją MVC, Yii wprowadza również front-controller, nazywany aplikacją, który hermetyzuje
|
|
wykonywanie kontekstu przetwarzanego żądania. Aplikacja zbiera pewne informacje o żądaniu
|
|
użytkownika a następnie przekazuje je do odpowiedniego kontrolera w celu późniejszego przetworzenia.
|
|
|
|
Poniższy diagram pokazuje statyczną strukturę aplikacji napisanej w Yii:
|
|
|
|

|
|
|
|
|
|
Typowe sterowanie kolejnością zadań (ang. A Typical Workflow)
|
|
------------------
|
|
Poniższy diagram pokazuje typowe sterowanie kolejnością zadań w aplikacji Yii podczas przetwarzania
|
|
żądania użytkownika:
|
|
|
|

|
|
|
|
1. Użytkownik wysyła żądanie za pomocą URL `http://www.example.com/index.php?r=post/show&id=1`
|
|
a serwer webowy przetwarza żądanie poprzez wykonanie skryptu rozruchowego
|
|
(ang. bootstrap script) `index.php`.
|
|
2. Skrypt rozruchowy tworzy instancję [aplikacji](/doc/guide/basics.application)
|
|
i uruchamia ją.
|
|
3. Aplikacja zawiera szczegółowe informacje o żądaniu użytkownika pochodzące z
|
|
[komponentu aplikacji](/doc/guide/basics.application#application-component)
|
|
o nazwie `request`.
|
|
4. Za pomocą komponentu aplikacji `urlManager` aplikacja ustala żądany
|
|
[kontroler](/doc/guide/basics.controller) oraz [akcję ](/doc/guide/basics.controller#action).
|
|
W podanym przykładzie, kontrolerem jest `post`, który reprezentuje
|
|
klasę `PostController`; akcją jest `show`, której aktualne znaczenie jest determinowane
|
|
przez kontroler.
|
|
5. Aplikacja tworzy instancję żądanego kontrolera w celu przetworzania w późniejszym etapie
|
|
żądania użytkownika. Kontroler ustala, iż akcja `show` odpowiada metodzie nazwanej `actionShow`
|
|
w klasie kontrolera. Następnie tworzy on i wywołuje filtry (np. filtr kontroli dostępu, benchmarking)
|
|
powiązane z tą akcją. Akcja jest wykonywana, jeśli zezwalają na to filtry.
|
|
6. Akcja odczytuje [model](/doc/guide/basics.model) `Post` z bazy danych o ID równym `1`.
|
|
7. Akcja generuje [widok](/doc/guide/basics.view) o nazwie `show` wraz z modelem `Post`.
|
|
8. Widok odczytuje i wyświetla atrybuty modelu `Post`.
|
|
9. Widok wywołuje pewne [widżety](/doc/guide/basics.view#widget).
|
|
10. Wynik generowania jest osadzany w [widoku](/doc/guide/basics.view#layout).
|
|
11. Akcja kończy generowanie widoku i wyświetla rezultat użytkownikowi.
|
|
|
|
|
|
<div class="revision">$Id: basics.mvc.txt 3321 2011-06-26 12:54:22Z mdomba $</div> |