module Yii

Modulele sunt blocuri de program de sine stătătoare. care constau din tipare. vizionări. controlere, și alte componente auxiliare. Utilizatorii finali pot accesa controlorii de module. atunci când este setat în aplicație. Din aceste motive, modulele sunt adesea văzute ca mini-aplicații. Modulele diferă de aplicații prin aceea că modulele nu pot fi dislocate singur și trebuie să fie în aplicații.

Crearea modulelor ¶

Un modul este organizat ca un director. care se numește calea de bază a modulului. În catalog sunt subdirectoare, cum ar fi controlere. modele. vizionări. care dețin controlere, modele, punctele de vedere, și alte cod, de asemenea. atât în ​​cerere. Exemplul următor prezintă conținutul din interiorul modulului:

Modul de clasă ¶

Fiecare modul trebuie să aibă o clasă unică modul. care durează de la yu \ Baza \ Modulul. Clasa trebuie să fie localizat direct sub calea de bază modulului și trebuie să fie autoloadable. Atunci când modulul este accesat, se va crea o copie a clasei relevante unități. Ca instanțe ale aplicației. Modul de copii utilizate pentru schimbul de date și pentru componentele din cadrul modulelor de cod.

Mai jos este un exemplu al modului în care modul de clasă ar putea arata astfel:

Dacă metoda init () conține o mulțime de proprietăți de module de cod de inițializare, puteți să le salvați, de asemenea, din punct de vedere al configurației și încărcați-l cu următorul cod în init ().

Module Controlere ¶

Când creați un modul controler, un acord pentru a pune controlorii clase controler în cadrul sub-spațiul de nume din modulul spațiu numele clasei. De asemenea, înseamnă. că fișierele clasei controller-ului ar trebui să fie plasate în modulul director controlori în calea de bază. De exemplu, pentru a crea un post pe forum modulul controler. arătat în paragraful precedent, trebuie să declare o clasă controler ca următoarele:

Puteți configura regulatoarele claselor namespace prin setarea yu \ Baza \ Modulul. proprietăți $ ControllerNamespace. În cazul. dacă unele dintre controlorii sunt situate în afara spațiului de nume, puteți să le facă disponibile prin setarea Yii \ de bază \ Modul :: $ controllerMap proprietate, doar. ceea ce faci într-o aplicație.

Considerații pentru modulele ¶

Considerații pentru modulul trebuie plasat în directorul vederi în interiorul calea bazei modulului. Pentru punctele de vedere. furnizate de modulul controler, acestea ar trebui să fie plasate sub vederi / directorul ControllerID. unde ControllerID se referă la ID-ul controlerului. De exemplu, în cazul în care o clasă PostController controler. directorul va fi vizualizari / post în cadrul modulului de bază calea.

Modulul poate specifica aspectul. care se aplică punctele de vedere. cu condiția controlorii de module. Layout-ul ar trebui să fie amplasate în dosarul / vizualizări machete în mod implicit, și trebuie să configurați yu \ Baza \ Module. proprietate $ Aspect. pentru a specifica numele de aspect. Dacă nu reglați proprietățile de aspect, layout-ul aplicației va fi utilizată în loc.

Comenzi CLI, în module ¶

Modulul poate anunța, de asemenea, echipa care va fi disponibil prin modul de consola.

Comanda. la utilitati linie de comandă. pentru a vedea echipa ta, va trebui să se schimbe yu \ Baza \ Modulul. $ ControllerNamespace proprietate, atunci când Yii se execută în modul consolă, și trimite-l la numele echipei.

O modalitate de a realiza acest lucru. pentru a verifica tipul de exemplu în Yii modulul de aplicație de inițializare () metodă:

Echipa ta va fi disponibil din linia de comandă, utilizând următoarea rută:

Utilizarea modulelor ¶

Pentru a putea utiliza modulul în cerere, doar personaliza aplicația prin transferarea a modulului în proprietate module ale aplicației. Următorul cod în modulul de configurare aplicație utilizează forum:

Modulele acceptă o serie de configurații module. Fiecare cheie în matrice este un identificator de modul. care identifică în mod unic modulul între toate modulele aplicației, iar valoarea corespunzătoare a șirului este configurat pentru a crea un modul.

rute ¶

Accesul la module ¶

În interiorul modulului, de multe ori aveți nevoie pentru a obține instanța modulului. astfel încât să puteți avea acces la ID-ul modulului, parametrii modulului, componentele module, etc. Puteți face acest lucru utilizând următoarea declarație:

în cazul în care MyModuleClass se referă la numele clasei modulului. care vă interesează. getInstance () returneaza solicitate la momentul instanței modulului. În cazul în care modulul nu este necesară, această metodă va returna null. Vă rugăm să rețineți că nu doriți să creați manual o nouă instanță a modulului de clasă, așa cum va fi diferită de cea creată de Yii când vi se solicită.

Informații: În dezvoltarea modulului, ar trebui să nu conta. modulul va folosi un ID fix. Acest lucru se datorează faptului că modulul poate fi asociat cu un ID arbitrar pentru utilizare în aplicarea sau în alt modul. Comanda. pentru a obține ID-ul modulului, ar trebui să utilizați abordarea de mai sus. pentru a obține instanță a modulului, apoi obține ID-ul folosind $ module-> id.

Puteți accesa, de asemenea, instanța modul, folosind următoarele abordări:

Prima abordare este utilă numai dacă știți ID-ul modulului, în timp ce a doua abordare este cel mai bine utilizat atunci când știi despre solicitările controler.

Odată ce aveți o instanță a modulului, puteți obține acces la parametrii și componentele înregistrate cu modulul. De exemplu,

Module bootstrapping ¶

Unele module pot să fie executați pentru fiecare cerere. Modulul de depanare este un exemplu. În acest scop, o listă de identificatori ai modulelor într-o proprietate bootstrap cerere.

De exemplu, următoarele garanții de configurare a aplicației. modul de depanare care este întotdeauna încărcat:

Module integrate ¶

Modulele pot fi imbricate în niveluri nelimitat. Adică, un modul poate conține un alt modul care poate conține încă un alt modul. Noi numim fostul modulul părinte în timp ce modulul de copil din urmă. Module pentru copii trebuie să fie declarate în proprietatea module a modulului lor mamă. De exemplu,

Controlerul din interiorul modulului încorporat, traseul său ar trebui să includă identitatea tuturor modulelor strămoșii lor. De exemplu, un forum / admin / tablou de bord / index este calea de acțiune indicele controler de bord admin - modul. care este un modul de modul de forum filială.

Informații: getModule () returneaza numai modulul direct la atașamentul copilului la mama lor. Yii \ baza \ Application :: $ loadedModules magazine de proprietate o listă de module încărcate, inclusiv ambele directe. și copii deopotrivă. imbricate acele clase indexate de numele lor.

Cele mai bune practici ¶

Modulele sunt cele mai utilizate în aplicații mari, ale căror funcții pot fi împărțite în mai multe grupuri, fiecare constând dintr-o multitudine de funcții strâns înrudite. Fiecare grup funcție poate fi conceput ca un modul, care este dezvoltat și menținut de către un dezvoltator sau o echipă specifică.

articole similare