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 exekveringsomgivning vid bearbetning av inkomna request. Application löser upp en request från användare och skickar 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
Följande diagram visar det typiska bearbetningsflödet för en Yii-applikation när den hanterar en request från användare:
Ett typiskt bearbetningsflöde för 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 startskriptet index.php
.
Startskriptet skapar ett applikationsobjekt, en instans av application samt kör denna.
Applikationsobjektet skaffar sig detaljerad information 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 kontrollern
post
vilket motsvarar klassen PostController
; åtgärden (action) är
show
, 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 metoden actionShow
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 är 1
från databasen.
Åtgärden renderar vyn show
med innehåll från
modellen Post
.
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.
Signup or Login in order to comment.