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

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

- 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
. - Skrypt rozruchowy tworzy instancję aplikacji i uruchamia ją.
- Aplikacja zawiera szczegółowe informacje o żądaniu użytkownika pochodzące z
komponentu aplikacji
o nazwie
request
. - Za pomocą komponentu aplikacji
urlManager
aplikacja ustala żądany kontroler oraz akcję . W podanym przykładzie, kontrolerem jestpost
, który reprezentuje klasęPostController
; akcją jestshow
, której aktualne znaczenie jest determinowane przez kontroler. - Aplikacja tworzy instancję żądanego kontrolera w celu przetworzania w późniejszym etapie
żądania użytkownika. Kontroler ustala, iż akcja
show
odpowiada metodzie nazwanejactionShow
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. - Akcja odczytuje model
Post
z bazy danych o ID równym1
. - Akcja generuje widok o nazwie
show
wraz z modelemPost
. - Widok odczytuje i wyświetla atrybuty modelu
Post
. - Widok wywołuje pewne widżety.
- Wynik generowania jest osadzany w widoku.
- Akcja kończy generowanie widoku i wyświetla rezultat użytkownikowi.