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:

Statyczna struktura aplikacji napisanej w Yii

Statyczna struktura aplikacji napisanej w Yii

1. 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:

Typowe sterowanie kolejnością zadań dla aplikacji napisanej w Yii

Typowe sterowanie kolejnością zadań dla aplikacji napisanej w Yii
  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 i uruchamia ją.
  3. Aplikacja zawiera szczegółowe informacje o żądaniu użytkownika pochodzące z komponentu aplikacji o nazwie request.
  4. Za pomocą komponentu aplikacji urlManager aplikacja ustala żądany kontroler oraz akcję . 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 Post z bazy danych o ID równym 1.
  7. Akcja generuje widok o nazwie show wraz z modelem Post.
  8. Widok odczytuje i wyświetla atrybuty modelu Post.
  9. Widok wywołuje pewne widżety.
  10. Wynik generowania jest osadzany w widoku.
  11. Akcja kończy generowanie widoku i wyświetla rezultat użytkownikowi.
$Id: basics.mvc.txt 3321 2011-06-26 12:54:22Z mdomba $

Be the first person to leave a comment

Please to leave your comment.