Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Yii, il framework PHP che punta sulle performance

Guida comparativa ai framework PHP. Caratteristiche, funzionalità e modi d'uso del framework Yii
Guida comparativa ai framework PHP. Caratteristiche, funzionalità e modi d'uso del framework Yii
Link copiato negli appunti

Questo articolo fa parte di una serie dedicata alla comparazione di Framework PHP.

Yii si propone come un framework ad alte prestazioni per la realizzazione di applicazioni web 2.0. È stato scritto per versioni di Php uguali o superiori alla versione 5.1.

Installazione

Dopo aver scaricato l'archivio dalla homepage del framework e averlo scompattato in una cartella del vostro server, si è già in grado di verificare la piena compatibilità digitando nella barra degli indirizzi del browser il seguente uri: http:/pathDiYii/requirements/index.php (dove pathDiYii è naturalmente l'indirizzo del server stesso).

Apparirà una schermata con alcune indicazioni. In questo momento il framework è già disponibile per lavorare ma, essendo presente l'opportunità, si può usare uno script che consente di creare tutte le cartelle e i file necessari di base per realizzare un sito o una web application. Bisogna impostare i permessi di scrittura sulle cartella protected che è il vero cuore dell'applicazione. Da riga di comando basta eseguire

Php yiic.php webapp pathnomeapp

In pochi minuti abbiamo già lo scheletro del sito. Non male.

Pattern MVC

Per quanto riguarda il pattern MVC è implementato in modo magistrale. Come già detto il cuore della stessa è situato all'interno della cartella protected. In questa si trovano le tre cartelle per la gestione MVC dell'applicazione.: Models, Views, Controllers.

Partendo dal controller di Yii diciamo subito che deve avere un nome simile al model ma con l'aggiunta del suffisso Controller. Da questo si intuisce che il controller include automaticamente il model.

Per quanto riguarda le viste, queste sono situate all'interno della cartella views e sono suddivise per controller. Quindi ogni controller ha la corrispettiva sotto-cartella nella cartella views. Ogni cartella può a sua volta contenere una sua sotto-cartella. Nel controller le azioni hanno il prefisso action ma nel browser è sufficiente digitare il nome dell'azione senza prefisso. Ovviamente l'azione predefinita è index. Per richiamare un'azione del controller si scrive: http://vostraApp/index.php/controller/action

I file delle viste sono file di tipo Php. Per richiamare una delle viste dal controller si usa il metodo render del controller stesso. Quindi:

$this->render('nomevista',$var);
// $var è un array di variabili che saranno disponibili nella vista.

È anche possibile renderizzare una vista in modo non completo utilizzando il metodo render partial. Se i file delle viste sono semplici file Php. Il discorso è completamente diverso per quanto riguarda i model e i controller. Il controller è una classe che estende controller o sue derivate e le azioni sono dei suoi metodi pubblici, mentre model può estendere sia active record, di cui parleremo più avanti, sia CForm.

Una caratteristica molto interessante del pattern MVC adottato da YII è la presenza della cartella layout all'interno della cartella views. Come potete immaginare in quella cartella è contenuto il layout del nostro lavoro. Ma le sorprese non sono finite. Nella cartella layout sono presenti almeno due file. Il primo è il file principale chiamato main. Poi ci possono essere tanti file quante strutture vogliamo. La scelta di uno di questi file viene effettuata nel controller semplicemente valorizzando una proprietà. Insomma direi proprio che è stato fatto un ottimo lavoro.

Database

La gestione del database è molto ben fatta. Grazie all'utilizzo di PDO, Yii propone il suo ORM. L'applicazione all'avvio, sfruttando il file di configurazione, effettua una connessione al database. Questa connessione è sempre disponibile in ogni punto dell'applicazione stessa. Il file di configurazione main.php si trova nella cartella config dell'applicazione. Precedentemente abbiamo parlato della possibilità di estendere il model da un model padre chiamato ActiveRecord. Quando si effettua questa operazione, il model creato risulta, con le opportune implementazioni, relazionato ad una tabella del database e, dispone già di tutti i metodi necessari per effettuare le operazioni di base sulla tabella.

Per applicazioni complesse non è consigliato utilizzare le impostazioni di base, ma, poiché i metodi coprono le più svariate situazioni, è difficile non trovare le impostazioni che fanno al caso vostro.

Un esempio banale è l'estrazione dei record dal database. Il model è dotato del metodo findAll che svolge questa operazione per noi.

$model->findAll();

I nomi dei campi della tabella corrispondono agli attributi del model. Valorizzati questi campi basta richiamare il metodo save del model per effettuare la modifica o l'inserimento.

Se nonostante questo non bastasse è possibile definire un active record personalizzato. In realtà gli autori lo definiscono come DAO ovvero DATA ACCESS OBJECT. In realtà sfrutta pdo per le operazioni sul database. Quindi avremo un oggetto connection, uno command , gli oggetti datareader e per finire gli oggetti transacation.

Yii consente di definire le relazioni tra le tabelle del database e quindi di effettuare le join in modo molto rapido e semplice.

Validazione

Yii dispone della classe validators per effettuare la validazione dei dati prima che finiscano nel database. La validazione può essere fatta in modo manuale ma, inutile dirlo, conviene lasciare questa incombenza al framework stesso. All'interno del model infatti è disponibile un metodo chiamato rules. In esso è presente un array di array, ognuno dei quali rappresenta una regola per la validazione. La cosa interessante è che ogni regola può essere applicata ad uno scenario diverso. Il caso più semplice è quello degli insert e degli update. Nel secondo caso appare evidente che la chiave primaria è un campo obbligatorio. La validazione viene eseguita in automatico ogni volta che viene richiamato il metodo save del model.

Ajax

Una delle caratteristiche più interessanti di Yii framework è senza dubbio l'integrazione con Ajax. Quando parlo di integrazione non mi riferisco solo alla possibilità di inserire chiamate Ajax senza problemi, ma dell'esistenza di metodi che generano tutto il codice JavaScript necessario per lavorare in Ajax. Un esempio banale è la validazione dei form, sono generati da Yii stesso. Ogni volta che un campo perde il focus , viene effettuata una richiesta Ajax per la validazione. Lo stesso discorso vale per la paginazione delle liste di dati generati in automatico. Come se non bastasse la classe CHtml è dotata del metodo statico Ajax che permette di effettuare chiamate in modo completamente personalizzato. Completa il tutto un numero molto alto di widget che crea codice JavaScript, come dialog, datepicker e campi con autocompletamento. Senza dubbio è uno dei punti di forza di questo framework.

Caching

Non poteva mancare un sistema di caching all'interno di framework così completo. La configurazione del sistema di caching avviene all'interno del file di configurazione nella sezione componenti. Qui si può indicare il tipo di cache da utilizzare e, cosa fondamentale, il oppure i server su cui appoggiare la cache. Yii offre diversi sistemi per il caching. MemCache e Apc per cominciare, per poi passare CDbCache, CZendDataCache,CfileCache. I sistemi elencati derivano tutti dalla stessa classe e di conseguenza è possibile passare da un sistema ad un altro non modificando il codice scritto sino a quel momento. Le libreria indicate consento di effettuare il caching sia di singoli pezzi di codice che di parti di viste o di viste intere.

Autenticazione

Yii implementa un ottimo sistema di autenticazione di base. I file che si occupano del tutto sono la classe userIdentity situata nella cartella component e i controller dell'applicazione. Il componente useridentity viene precaricato di default dall'applicazione. Il problema però è che useridentity è completamente fittizio. Bisogna scrivere il codice necessario affinché si effettui una reale autenticazione. Il codice è comunque presente nella guida del framework. Senza scendere troppo nei dettagli questo componente valorizza l'utente. L'utente è accessibile mediante la sintassi

Yii::app()->user

Yii implementa il controllo ACL. Questo viene eseguito mediante l'ausilio di un metodo rules all'interno dei singoli controller. In esso, mediante un array, sono specificate le singole autorizzazioni per ogni azione e per ogni tipologia di utente.

Internazionalizzazione e localizzazione

Anche in questo aspetto Yii fornisce numerosi strumenti. Grazie alle sue classi è possibile rappresentare le date in formati diversi, formattare i numeri in base al paese e tradurre i messaggi con estrema facilita. Il metodo magico che consente le traduzioni dei messaggi è Yii::t(); In esso vengono passati due parametri. Il nome del repository dei messaggi e il testo da tradurre. Sarà cura del framework andare a leggere dal repository il valore da tradurre. I repository vengono inseriti all'interno della cartella protected message. Appare evidente di come il tutto sia molto semplice.

Supporto e guide

Il sito offre la guida esclusivamente nella lingua inglese. Quindi anche in questo caso chi ha difficoltà con la lingua anglosassone, potrebbe subire rallentamenti nella lettura della guida. C'è da dire che la guida è fatta molto bene anche se, in alcuni casi, qualche esempio in più non avrebbe guastato. Sono presenti numerosi tutorial che arricchiscono la guida di base. Il forum è molto frequentato ma purtroppo, anche in questo caso, si parla della versione inglese. Il forum in italiano è quasi deserto. I tempi di risposta sono abbastanza veloci.

Ulteriori caratteristiche

La presenza del modulo gii rende ulteriormente interessante Yii. Questo modulo, disponibile con la versione di base del framework, consente di creare in un colpo solo, le viste, i model e i controller necessari per le operazioni crud. Ovviamente parliamo di operazioni di base ma sono pur sempre un ottimo punto di partenza.

L'homepage di Yii, da cui scaricare il framework e ricevere documentazione specifica, si trova all'indirizzo www.yiiframework.com.

Guida ai Framework PHP

  • Articolo 1: dooPHP
  • Articolo 2: YII
  • Articolo 3: Symfony
  • Articolo 4: CodeIgniter
  • Articolo 5: Zend(in via di pubblicazione)
  • Articolo 6: Kohana (in via di pubblicazione)
  • Articolo 7: Akelos (in via di pubblicazione)
  • Articolo 8: CakePhp (in via di pubblicazione)

Indice di tutti gli articoli.


Ti consigliamo anche