Model-View-Controller (MVC)
Yii implementerar designmönstret model-view-controller (MVC), vilket är brett antaget inom webbprogrammering. MVC syftar till att separera överväganden om affärsregler (business logic) från sådana som avser användargränssnitt (user interface), så att utvecklare lättare kan ändra det ena utan att påverka det andra. Inom MVC, representerar modellen information (data) samt affärsregler; Vyn (view) innehåller element ur användargränssnittet såsom text och inmatningsfält; kontrollern ombesörjer kommunikation mellan modell och vy.
Utöver MVC, introducerar Yii även en förgrundskontroller (front-controller), Application, som representerar en exekveringsomgivning för bearbetning av inkomna request. Application samlar information om en request från användare och skickar sedan denna vidare till relevant kontroller för fortsatt behandling.
Följande diagram visar den statiska strukturen hos en Yii-applikation:
Statisk struktur hos Yii-applikation

Typiskt bearbetningsflöde
Följande diagram visar det typiska bearbetningsflödet för en Yii-applikation när den hanterar en request från användare:
Typiskt bearbetningsflöde för en Yii-applikation

En användare skickar en request med URL:en
http://www.example.com/index.php?r=post/show&id=1
och webbservern hanterar denna request genom att köra startskriptetindex.php
.Startskriptet skapar ett applikationsobjekt, en instans av Application samt kör denna.
Applikationsobjektet skaffar sig den detaljerade informationen om användarens request från applikationskomponenten
request
.Applikationen avgör vilken controller resp. action som efterfrågas, med hjälp av applikationskomponenten
urlManager
. I detta exempel är kontrollernpost
, vilket motsvarar klassenPostController
; åtgärden (action) ärshow
, vars faktiska innebörd bestäms av kontrollern.Applikationen skapar en instans av den begärda kontrollern för fortsatt hantering av användarens request. Kontrollern avgör att åtgärden
show
refererar till metodenactionShow
i kontrollerklassen. Därefter skapar och exekverar den filter (t.ex. tillträdeskontroll, prestandamätning) som associerats till denna åtgärd. Åtgärden exekveras sedan om detta tillåts av filtren.Åtgärden läser en
Post
-modell vars ID är1
från databasen.Åtgärden renderar vyn
show
med innehåll från modellenPost
.Vyn läser och presenterar attributen från modellen
Post
.Vyn exekverar några widgets.
Resultatet från vyrenderingen bäddas in i en layout.
Åtgärden slutför renderingen och det färdiga resultatet presenteras för användaren.