Model-View-Controller (MVC)
Yii implementa il design pattern schema di progettazione model-view-controller (MVC), che è largamente adottato nella programmazione Web. L'obiettivo di MVC è quello di separare la business logic logica di funzionamento dalle considerazioni relative all'interfaccia utente, cosicché gli sviluppatori possono modificare ciascuna parte più facilmente senza influenzare le altre. Nel MVC il model rappresenta le informazioni (i dati) e la business logic; la view contiene elementi dell'interfaccia utente come testi, form di inserimento dati; e il controller gestisce le comunicazioni tra model e view.
Yii, oltre ad implementare MVC, introduce un front-controller, chiamato
Application
il quale incapsula il contesto di esecuzione per il processo di
una richiesta. Application raccoglie alcune informazioni sulla richiesta
dell'utente e poi le smista al controller appropriato per ulteriori
manipolazioni.
Il seguente diagramma mostra la struttura statica di un'applicazione Yii:
Struttura statica di un'applicazione Yii

Workflow tipico
Il seguente diagramma mostra il workflow flusso di lavoro tipico di un'applicazione Yii quando essa gestisce una richiesta utente:
Workflow tipico di un'applicazione Yii

- Un utente esegue una richiesta all'URL
http://www.example.com/index.php?r=post/show&id=1
ed il web server gestisce la richiesta eseguendo lo script di avvioindex.php
. - Lo script di avvio crea un'istanza dell'Applicazione e la esegue.
- L'Application riceve le informazioni dettagliate della richiesta
dell'utente da un component dell'applicazione
che si chiama
request
. - L'Application determina sia il controller
che l'action richiesti grazie all'aiuto
dell'application component che si chiama
urlManager
. In questo esempio, il controller èpost
, il quale si riferisce alla classePostController
; e l'action èshow
, il cui significato attuale è determinato dal controller. - L'applicazione crea una istanza del controller richiesto per gestire
ulteriormente la richiesta utente. Il controller determina che l'action
show
si riferisce al metodo, all'interno della classe del controller, che si chiamaactionShow
. Il metodo crea ed esegue i filtri (es. controllo accessi, benchmark) associati con questa action. L'action viene eseguita se ciò è permesso dai filtri. - L'action, tramite il model, legge dal database
il
Post
il cui ID è1
. - L'action produce una view chiamata
show
con i prodotti dal modelPost
. - La view legge e visualizza gli attributi del model
Post
. - La view esegue alcuni widget.
- La produzione della view viene incorporata in un layout.
- L'action completa la produzione della view e ne visualizza il risultato all'utente.