Conventii

Yii este in favoarea conventiilor si sustine mai putin configuratiile. Doar urmand conventiile se pot crea aplicatii Yii sofisticate, fara a scrie sau a gestiona configuratii complexe. Totusi, Yii poate fi customizat in aproape orice aspect atunci cand configuratii noi sunt necesare.

Mai jos descriem conventiile care sunt recomandate pentru programarea in Yii. Pentru convenienta, presupunem ca WebRoot este directorul in care este instalat aplicatia Yii.

1. URL

Implicit, Yii recunoaste URL-uri cu urmatorul format:

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

Variabila r (face parte din GET) se refera la ruta, care este folosit de Yii pentru a extrage controller-ul si action-ul. Daca ActionID nu este precizat, controller-ul va lansa action-ul implicit (definit in CController::defaultAction); iar daca ControllerID lipseste si el (sau variabla r lipseste cu totul), atunci aplicatia va folosi controller-ul implicit (definit prin CWebApplication::defaultController).

Cu ajutorul clasei CUrlManager, este posibila crearea si recunoastea mai multor URL SEO-friendly, precum http://hostname/ControllerID/ActionID.html. Acest feature este prezentat in detaliu in Gestiunea URL.

2. Cod

Yii recomanda ca denumirea variabilelor, functiilor si tipurilor de clase sa se faca in stil camel. Stilul camel inseamna capitalizarea fiecarui cuvant (prima litera a cuvantului este litera mare) din interiorul numelui si alaturarea cuvintelor fara spatii intre ele. Pentru a se face diferenta fata de numele de clase, numele de variabile si functii ar trebui sa inceapa cu un cuvant complet in lower-case. (ex. $basePath, runController(), LinkPager). Pentru variabilele private ale unei clase, este recomandat sa punem un caracter underscore _ in fata numelor (ex. $_actionList).

Conceptul de namespace a fost implementat o data cu versiunea PHP 5.3.0. Pentru ca versiunile anterioare de PHP nu au implementat acest concept, recomandam denumirea claselor intr-un fel unic pentru a evita conflictele de nume cu alte clase externe Yii. that classes be named in some unique way to avoid name conflict with Tot din acest motiv, toate clasele Yii au in fata litera "C".

In ce priveste controller-ele, regula speciala este ca numele lor trebuie sa fie urmate de cuvantul Controller. De exemplu, clasa PageController va avea ID-ul page. Deci ID-ul controller-ului este numele clasei (cu prima litera mica), din care se indeparteaza apoi cuvantulController. Aceasta regula face aplicatia mai sigura din punctul de vedere al securitatii. De asemenea, URL-urile sunt mai compacte (ex. /index.php?r=page/index in loc de /index.php?r=PageController/index).

3. Configuratie

O configuratie este de fapt un array cu perechi key-value. Fiecare key reprezinta numele proprietatii obiectului configurat. Fiecare value reprezinta valoarea initiala a proprietatii respective. De exemplu, array('name'=>'My application', 'basePath'=>'./protected') initializeaza proprietatile name si basePath cu valorile initiale My application, respectiv ./protected.

Orice proprietate cu drept de scriere din orice obiect poate fi configurata. Daca nu este configurata, proprietatea va lua valoarea implicita. Cand configuram o proprietate, este folositor sa citim documentatia ei, astfel in cat valoarea initiala sa fie valida.

4. Fisiere

Conventia pentru numele de fisiere depinde de tipurile lor.

Fisierele claselor ar trebui sa fie denumite cu numele public al claselor respective. De exemplu, clasa CController este in fisierul CController.php. O clasa publica este o clasa care poate fi folosita de orice alta clasa. Fiecare fisier care contine o clasa ar trebui sa contina cel mult o clasa publica. Clasele private (care sunt folosite doar de catre o clasa publica) ar trebui sa existe in acelasi fisier in care exista clasa publica.

Fisierele de tip view ar trebui sa aiba numele view-ului respectiv. De exemplu, view-ul view1 ar trebui sa fie in fisierul view1.php. Un fisier view este un fisier PHP care contine cod PHP si HTML doar cu scop de prezentare pentru client.

Fisierele de configurare pot fi denumite in orice fel. Un fisier de configurare este un fisier PHP al carui singur scop este sa returneze un array care contine configuratia.

5. Directoare

Yii este structurat initial conform unui set implicit de directoare folosite pentru diverse scopuri. Fiecare director poate fi customizat daca este nevoie.

  • WebRoot/protected: acesta este application base directory. Contine toate fisierele PHP si fisierele de date care trebuie securizate fata de exterior. Poate fi schimbat prin CWebApplication::basePath. Yii contine un alias implicit avand numele application care este asociat cu aceasta cale. Accesul la acest director, inclusiv orice subdirector, ar trebui sa fie interzis tuturor utilizatorilor Web.

  • WebRoot/protected/runtime: acest director contine toate fisierele private temporare generate in timpul rularii aplicatiei. Acest director poate fi schimbat prin CApplication::runtimePath. Acest director trebuie sa dea drepturi de scriere procesului serverului Web.

  • WebRoot/protected/extensions: acest director contine toate extensiile third-party. Acest director poate fi schimbat prin CApplication::extensionPath.

  • WebRoot/protected/modules: acest director contine toate modulele aplicatiei, fiecare reprezentand un subdirector.

  • WebRoot/protected/controllers: acest director contine toate fisierele cu clasele controller-elor. Acest director poate fi schimbat prin CWebApplication::controllerPath.

  • WebRoot/protected/views: acest director contine toate fisierele view, inclusiv view-urile controller-elor, view-urile layout si view-urile sistem. Acest director poate fi schimbat prin CWebApplication::viewPath.

  • WebRoot/protected/views/ControllerID: acest director contine fisierele view pentru un singur controller (identificat prin ID-ul sau, ControllerID). Acest director poate fi schimbat prin CController::getViewPath.

  • WebRoot/protected/views/layouts: acest director contine toate fisierele view care contin layout-uri. Acest director poate fi schimbat prin CWebApplication::layoutPath.

  • WebRoot/protected/views/system: acest director contine toate fisierele view ale sistemului. View-urile sistemului sunt template-uri folosite pentru afisarea exceptiilor si erorilor. Acest director poate fi schimbat prin CWebApplication::systemViewPath.

  • WebRoot/assets: acest director contine fisiere asset publicate. Un fisier asset este un fisier privat care poate fi publicat pentru a deveni accesibil utilizatorilor Web. Acest director trebuie sa dea drept de scriere procesului serverului Web. Acest director poate fi schimbat prin CAssetManager::basePath.

  • WebRoot/themes: acest director contine diverse teme in care poate fi prezentata aplicatia Yii. Fiecare subdirector reprezinta o singura tema al carui nume este numele subdirectorului respectiv. Acest director poate fi schimbat prin CThemeManager::basePath.

$Id: basics.convention.txt 749 2009-02-26 02:11:31Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.