• Una piccola introduzione al framework php Yii (Yes It Is!) – installazione e creazione di una semplice applicazione web 2.0

    Date: 2012.01.11 | Category: PHP | Tags:

    Yii è un framework open source scritto in PHP pensato per sviluppare applicazioni web 2.0.

    Yii implementa il pattern architetturale MVC (MODEL VIEW CONTROLLER) che ha come obiettivo principale quello di separare la logica di business da interfaccia utente.

    Secondo questo noto pattern, nel MODEL sono memorizzati i dati dell’applicazione, nel VIEW sono visualizzati gli elementi dell’interfaccia utente ed i dati contenuti nel model mentre il CONTROLLER gestisce principalmente la comunicazione tra MODEL e VIEW.

    In altre parole la logica applicativa è a carico del MODEL / CONTROLLER mentre l’interfaccia utente è a carico della VIEW. Questo pattern aiuta i programmatori ad avere un codice organizzato e più facile da manutenere.

    Oltre ad implementare il design-pattern MVC, Yii ha introdotto un ulteriore front-controller chiamato Application che funge da router di tutte le richieste web. Il front-controller analizza le richieste provenienti dal browser ed estrapola alcune informazioni utili per capire a quale controller inoltrarle.

    In figura è riportata la struttura di una generica applicazione Yii:

    struttura-di-un-applicazione-yii

    struttura-di-un-applicazione-yii

    Ciclo di vita di una richiesta WEB all’interno del framework Yii

    1. Il browser invia una richiesta al server che ospita l’applicazione con MVC
    2. Un controllore è invocato per gestire la richiesta
    3. Il controllore interagisce con il modello
    4. Il controllore invoca la view
    5. La view renderizza i dati sottoforma di HTML e li restituisce al browser

    Convenzione sull’URL

    Come già detto, in un’applicazione Yii le richieste proveniente dal browser sono prima elaborate da un ROUTER che analizza la richiesta per decidere a quale applicazione inoltrarla.

    Il router prende la decisione su quale controllore invocare in base alla struttura della URL che deve seguire questa convenzione:

    http://hostname/index.php?r=ControllerID/ActionID

    Dove la variabile GET r si riferisce alla route che sarà risolta dal router di Yii nel corrispondente controllore / azione.
    Se l’ActionID è omesso viene chiamato quella di default e lo stesso discorso vale per ControllerID.

    Esempio:

    http://www.example.com/index.php?r=post/show&id=1

    Se avete intenzione di indicizzare il vostro sito sui motori di ricerca, una delle principali regole SEO da seguire è l’avere degli SEO Friendly URLs (esempio con questa struttura – http://hostname/ControllerID/ActionID.html). Per far cio’ vi può essere di aiuto cUrlManager

    Le convenzioni sono molto utilizzate all’interno di questo framework, questo perché Yii favorisce il paradigma di programmazione “conventions over configurations” (http://it.wikipedia.org/wiki/Convention_Over_Configuration)

    Convenzione sulle directory

    Nel momento in cui si crea un’applicazione con Yii bisogna seguire delle convenzioni sui nomi delle directory (queste convenzioni posso essere modificate):

    • WebRoot/protected: questa è la cartella principale dell’applicazione che contiene tutti gli script PHP sensibili alla sicurezza ed i file dei dati.
    • WebRoot/protected/runtime: contiene i file temporanei privati generati durante l’esecuzione dell’applicazione
    • WebRoot/protected/extensions:contiene tutte le estensioni di terze parti.
    • WebRoot/protected/modules: contiene tutti i moduli dell’applicazione
    • WebRoot/protected/controllers: contiene tutti i file delle classi controller.
    • WebRoot/protected/views: contiene tutti i file delle view, comprese le view dei controller, le view dei layout e le view di sistema.
    • WebRoot/protected/views/ControllerID: questa cartella contiene i file delle view di una singola classe controller.
    • WebRoot/protected/views/layouts: contiene tutti i file delle view dei layout.
    • WebRoot/protected/views/system: contiene tutti i file delle view delle view di sistema.
    • WebRoot/assets: contiene tutti i file asset pubblicati.
    • WebRoot/themes: contiene vari temi che possono essere applicati all’applicazione. Ciascuna sotto cartella rappresenta un singolo tema il cui nome è il nome della sottocartella.

    Installare il Framework Yii in Windows 7 con XAMPP e creare la prima applicazione demo

    • Scaricare Yii framework dal sito ufficiale - http://www.yiiframework.com
    • Scompattare l’archivio e salvare la cartella framework all’interno della root del server web, nel mio caso c:\xamplite\htdocs
    • Modificare la variabile d’ambiente di sistema PATH aggiungendo due valori: il primo è il percorso del frameworkc:\xamplite\htdocs\framework mentre il secondo è il percorso dell’eseguibile php che nel mio caso è c:\xamplite\php:

      modifica_variabile_sistema_yii

    • aprire il prompt dei comandi e spostarsi all’interno della propria webroot, nel mio caso c:\xamplite\htdocs: ed eseguire l’utility yiic per creare una nuova applicazione demo impartendo il comando
      yiic webapp demo

      come mostrato in figura:
      screenshot_esecuzione_comando_yiic

    Ecco come si presenta all’applicazione demo appena creata

    screenshot_prima_applicazione_con_yii

    L’applicazione appena creata dal tool yiic è composta da quattro pagine:

    1. Home – http://localhost/demo/index.php?r=site/index
    2. About – http://localhost/demo/index.php?r=site/page&view=about
    3. Contact – http://localhost/demo/index.php?r=site/contact
    4. Login – http://localhost/demo/index.php?r=site/login

    Home richiama l’azione index contenuta nel controller site, About richiama l’azione page del controller site passando come parametro la querystring &view=about, Contact richiama l’azione contact del controller site mentre Login richiama l’azione login del controller site.

    Per maggiori dettagli sull’applicazione appena installata: http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app