PHP, din versiunea 5.3, ne-a dat un spațiu de nume. De atunci, a existat o discuție lentă și undeva viguroasă, cum poate fi folosit acest spațiu de nume?
Unele cadre, cum ar fi Symphony, Laravel și, bineînțeles, Zend au pus în practică această tehnologie.
Toate acestea se potrivesc mai mult sau mai puțin în schema MVC. A fost o discuție, probabil veșnică, ce ar trebui să fie principalul cuplu al aplicației - Model și Controller?
Unii dintre noi ni se spune că modelul ar trebui să fie îngust și gros și cu el un controler subțire și subțire. Într-un cuvânt - matriarhie.
Alții, dimpotrivă, cred că controlorul ar trebui să gestioneze totul și să comanda, așa că se dovedește a fi aprofundat, bine hranit. Și cu ea, un model subțire, subțire, a cărui sarcină este redusă la servire - aduce. O astfel de patriarhie aici.
Deci, ce este mai bine în schema MVC? Patriarhia sau matriarhia?
Să privim acest lucru din punctul de vedere al construirii unei celule de familie bazate pe democrație. Și lăsați Namespace-ul să ne ajute în asta.
Nu ne plac groase controlorii, stângace cărora le place un taur într-un magazin de China, din neatenție poate zdrobi întreaga aplicație.
Nici nu ne place modele groase. Ei bine, cine le place? Ei trebuie să fie vrednici de podium!
Să încercăm să folosim Spațiul Nomenclat, ca și în cazul unei legături bune, pentru a crea o familie armonioasă.
În primul rând, vom crea cadrul pentru aplicație. Cum este banal, dar lăsați-l să fie un blog.
Am creat structura de bază, unde:
- Blogul este spațiul de stocare pentru aplicația noastră;
- Vizualizări și șabloane - un depozit de vizualizări și șabloane;
- Utilitate - un depozit de biblioteci partajate;
- index.php - script de bootstrap;
- Post - acesta este locul unde trebuie să aibă loc idila familiei Controlorului și a Modelului.
Cu index.php totul este simplu:
Când creați un blog în clasă am introduce la Post clasa Namespace blogpost autoincarcatorul și îl încarcă de pe blog / post / Post.php.
Probabil, această clasă poate fi numită Controller,
Esența postului include:
- structura înregistrării în sine - BlogPostEntitiesPostEntity.php
- sistemul de interacțiune cu baza de date - BlogPostRepositoriesDB.php - aici este, subțire nostru model, grațios,
Doar aduceți-o, și nimic mai mult!
Ca rezultat, am reușit să creăm o structură de aplicații în care toate componentele sunt bine conectate și am obținut o separare clară a claselor, în care fiecare clasă își îndeplinește sarcina. Controlerul este subțire și puternic în același timp. Modelul îl potrivește. O familie ideală!
Și totul este Namespace.
Nu susțin, în multe cazuri, cadrul convenabil. Dar, uite, Namespace-ul nu-ți amintește nimic?
Clarificarea divizării în clase, stricte și, în același timp, flexibile, complet subordonate ierarhiei dezvoltatorilor de cataloage și clase.
Lipsa unei astfel de adăugări grave în formă de sute de fișiere și clase sub forma unui cadru.
Absența unui pat Procrustean de reguli pentru interacțiunea dintre clase și componente.