MVC model și php, partea 1
Model Model-View-Controller (MVC). deschis la sfârșitul anului 1970, acesta este un software de arhitectura model de design, a cărui sarcină principală este de a separa funcțiile de lucru cu datele din reprezentările lor. In teorie, un bine conceput MVC-aplicație va permite dezvoltatorilor frontend și backend în cursul activității nu este acela de a interveni în zona de responsabilitate între ele, adică, Frontend al dezvoltator nu trebuie să știe nimic despre „bucătăria“ omologii săi backend și vice-versa.
Deși inițial MVC a fost conceput pentru a dezvolta aplicații desktop, acesta a fost adaptat pentru a prezenta o zi probleme și sa bucurat de dezvoltatorii web foarte populare, deoarece, datorită împărțirii responsabilităților a devenit posibilă crearea unui cod clar, gata de a re-utilizare. MVC model are ca rezultat un sistem clar, modular, care permite dezvoltatorilor să facă rapid modificări la codul existent.
înțelegere MVC
După cum sa menționat deja, numele de model provine din abrevierea de trei cuvinte: model (model), View (vizualizare) Controller (PLC). Pe scurt, modelul de principiu de lucru poate fi ilustrat printr-o diagramă (versiunea originală poate fi găsită pe Wikipedia):
Această diagramă arată în mod clar flux unidirecțional de informații în model, și, de asemenea, descrie rolul fiecărei componente.
Modelul este folosit pentru a accesa și manipula datele. În cele mai multe cazuri, modelul - aceasta este ceea ce se utilizează pentru a avea acces la depozitul de date (de exemplu, baza de date). Modelul oferă o interfață pentru recuperarea datelor și crearea lor, modificare și ștergere din depozit. În contextul modelului de model MVC este intermediar între depunerea și controlorul.
Este caracteristică extrem de importantă a modelului este faptul că punct de vedere tehnic nu are cunoștință de nici ce se întâmplă cu datele din controler și vizualizarea. Modelul nu ar trebui să facă sau să aștepte orice cerere la / de la alte componente ale modelului.
Cu toate acestea, amintiți-vă întotdeauna că modelul - nu este doar o poarta de acces pentru a accesa baza de date sau de alt sistem, care se ocupă doar cu transferul de date încoace și încolo. Modelul - este ceva ca un punct de control la datele. Modelul în cele mai multe cazuri, este cea mai dificilă parte a sistemului, în parte datorită faptului că modelul în sine are un link către toate celelalte părți.
idee
Prezentare - acest lucru este în cazul în care datele obținute din modelul sunt afișate în forma corectă. În aplicațiile web tradiționale, dezvoltat în cadrul reprezentării MVC-model - face parte dintr-un sistem care se execută generarea de HTML-cod. Reprezentarea este de asemenea responsabil pentru a obține o acțiune din partea utilizatorului pentru a le trimite la controler. De exemplu, vizualizarea prezintă butonul în interfața cu utilizatorul, și apoi apăsând provoacă o acțiune de controler corespunzătoare.
Există unele concepții greșite despre scopul prezentării, în special în mediul de dezvoltare web care sunt doar incepand de a construi aplicații lor folosind MVC. Una dintre cele mai frecvent încălcate regulile este că ideea ar trebui în nici un fel de a comunica cu modelul. și toate datele obținute de reprezentare ar trebui să vină numai de la operator. În practică, dezvoltatorii ignora adesea acest concept, în picioare în baza MVC-model. Articolul Fabio Cevasco CakePHP cadru: prima mușcătură dvs. arată în mod clar această abordare confuză a MVC pe exemplul cadru a CakePHP, unul dintre multele non-standard MVC-cadre:
Este extrem de important să se înțeleagă că, în scopul de a obține corecte MVC-arhitectura, nu trebuie să existe interacțiuni directe între reprezentările și modelele. Toate schimbul de date între logica trebuie să fie puse în aplicare în controlerele.
În plus, există o concepție greșită comună că ideea - este doar un fișier șablon. După cum sa menționat de Tom Butler, această concepție greșită are o scară foarte mare datorită faptului că mulți dezvoltatori de la început înțeles greșit structura MVC, și apoi începe să toarne „cunoștințe“ asupra maselor dezvoltatori novice. De fapt, o idee - este mult mai mult decât doar un șablon, cu toate acestea, o mulțime de cadre construit pe baza MVC-model, astfel denaturat conceptul de ideea că toată lumea deja nu-mi pasă cât de bine sunt aplicațiile lor în ceea ce privește MVC-model.
Un alt punct important este faptul că ideea nu funcționează cu date „pure“ de la operator, operatorul nu a lucrat cu ideea de a modelului de by-pass. În timpul interacțiunii operatorului și modelul de prezentare trebuie să fie întotdeauna între ele.
controlor
Controler - aceasta este ultima parte a fasciculelor MVC. Controlerul sarcină primește date de la utilizator și modelul de manipulare. Este controller, și numai el, este acea parte dintr-un sistem care interacționează cu utilizatorul.
Pe scurt, controlerul poate fi descris ca un colector de informații care trimite modelele sale de stocare și procesare. El nu ar trebui să facă nimic cu datele, dar numai pentru a fi în măsură să le obține de la utilizator. Controlerul este asociat cu una și aceeași reprezentare de model, organizarea astfel un flux de date unidirecțional, controlând-o la fiecare etapă.
Este important să ne amintim că operatorul începe activitatea doar ca rezultat al interacțiunii utilizatorului cu reprezentarea care este funcția de controlor adecvat. Cea mai des întâlnită greșeală în rândul dezvoltatorilor este faptul că regulatorul este considerat pur și simplu ca un gateway între depunerea și modelul. Ca urmare, operatorul trebuie să aibă funcțiile pe care trebuie să fie efectuate prin prezentarea (apropo, asta în cazul în care picioarele cresc de la ideea că ideea - este doar un fișier șablon). Mai mult decât atât de mulți nu arunca toate logica de procesare a datelor, uitând ce în MVC model este un model.
Eu propun să încerc să pună în aplicare descrisă mai sus într-o mică anexă. Pentru început, se va crea un model de clasă, vizualizare și controller: