Convenzioni

Yii favorisce le convenzioni al posto delle configurazioni. Seguendo le convenzioni si possono creare applicazioni Yii sofisticate senza scrivere e gestire configurazioni complesse. Naturalmente, quando necessario Yii può essere ancora personalizzato in quasi ogni aspetto con le configurazioni.

Qui di seguito sono descritte le convenzioni che sono raccomandate nella programmazione con Yii. Per comodità, si presume che WebRoot sia la cartella in cui l'applicazione Yii si trovi installata.

URL

Per default, Yii riconosce gli URL con il seguente formato:

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

La variabile GET r si riferisce alla route che può essere risolto da Yii in controller ed action. Se si omette ActionID, il controller prenderà l'action di default (definito tramite CController::defaultAction); se viene omesso anche ControllerID (o la variabile r è assente), l'applicazione userà il controller di default (definito tramite CWebApplication::defaultController).

Con l'aiuto di CUrlManager, è possibile creare e riconoscere URL più amichevoli per il SEO, come ad esempio http://hostname/ControllerID/ActionID.html. Questa funzionalità è descritta in dettaglio nel paragrafo URL Management.

Codice

Yii raccomanda di nominare le variabili, funzioni e classi in "camel case" dove la prima lettera di ogni parola del nome è maiuscola e queste parole sono legate tra loro senza spazi. I nomi delle variabili e delle funzioni dovrebbero avere la loro prima parola tutta in minuscolo, cosicché possano essere differenziati dai nomi delle classi (es. $basePath, runController(), LinkPager). Per i membri di variabili private, è raccomandato mettere un underscore come prefisso al nome (es. $_actionList).

Dato che i namespace non sono supportati dalle versioni di PHP precedenti alla 5.3.0, è raccomandato che le classi siano nominati in un modo univoco in modo tale da evitare conflitti con classi di terze parti. Per questa ragione, tutte le classi del framework Yii hanno come prefisso la lettera "C".

Una regola speciale per i nomi della classe controller è quella che a questi deve seguire la parola Controller. L'ID del controller è quindi definito come il nome della classe con la prima lettera in minuscolo senza la parola Controller. Per esempio, la classe PageController avrà l'ID page. Questa regola rende l'applicazione più sicura. Rende inoltre gli URL legati ai controller un po' più chiari (es. /index.php?r=page/index invece di /index.php?r=PageController/index).

Configurazione

La configurazione è un array a coppie di chiave-valore. Ogni chiave rappresenta il nome di una proprietà dell'oggetto che deve essere configurato, ed ogni valore rappresenta il corrispondete valore iniziale della proprietà. Per esempio, array('name'=>'My application', 'basePath'=>'./protected') inizializza le proprietà name e basePath con i loro corrispondenti valori dell'array.

Ogni proprietà scrivibile di un oggetto può essere configurata. Se non configurata, la proprietà prenderà il suo valore di default. Quando viene configurata una proprietà, vale la pena di leggere la corrispondente documentazione cosicché il valore iniziale possa essere dato in modo corretto.

File

La convenzione per la denominazione e l'uso dei file dipende dai loro tipo.

I file delle classi dovrebbero essere denominati dopo la loro classe pubblica che contengono. Per esempio, la classe CController corrisponde al file CController.php. Una classe pubblica è una classe che può essere usata da altre classi. Ogni file di una classe dovrebbe contenere al massimo un sola classe pubblica. Classi privare (classi che sono utilizzate da una singola classe pubblica) possono stare nello stesso file con la classe pubblica.

I file delle view dovrebbero essere denominate dopo il nome della view. Per esempio, la view index corrisponde al file index.php. Un file view è uno script PHP che contiene HTML e codice PHP principalmente a scopo di presentazione.

I file di configurazione possono essere denominati arbitrariamente. Un file di configurazione è uno script PHP il cui unico scopo è quello di restituire un array associativo che rappresenta la configurazione.

Cartelle

Yii presuppone una serie di cartelle di default usate per vari scopi. Ciascuna di esse, se necessario, può essere personalizzata.

Database

La maggior parte delle web application sono sorrette da un database. Per una migliore pratica, si propone la seguente convenzione per la denominazione delle tabelle e dei campi del database. Notare che non sono necessari per Yii.

$Id: basics.convention.txt 3225 2011-05-17 23:23:05Z alexander.makarow $