Am intalnit destul de multe persoane care scriu cod PHP dar care nu se gandesc si la viitor, in sensul de a-si usura munca in eventualitatea aparitiei unui nou look pentru aplicatie sau modificari la nivel de functionalitate.
Multi dintre cei intrebati daca folosesc un framework MVC pentru aplicatiilor lor au raspuns: ce? ce-i ala MVC? etc motiv pentru care am decis sa preiau o mica prezentare de pe wikipedia.
Model-View-Controller (MVC) este un model arhitectural folosit la dezvoltarea de software. In aplicatii complexe care prezinta un numar mare de date utilizatorului, un developer de multe ori doreste sa separe datele(model) de interfata (view) astfel incat modificarile la nivelul interfetei sa nu afecteze preluarea si procesarea datelor si ca datele sa poata fi reorganizate fara modificarea interfetei. MVC rezolva aceasta problema prin decuplarea accesului la date si structura logica de prezentarea datelor si interactiunea utilizatorilor introducand o componenta intermediara: controller-ul.
Model.
Reprezentarea specifica domeniului a informatiei cu care opereaza aplicatia.Logica domeniului aduce inteles datelor (ex. calcularea daca astazi este ziua unui utilizator). Multe aplicatii folosesc un mecanism de stocare (ex. o baza de date) pentru date. MVC nu mentioneaza intr-un mod specific nivelul de acces la date pentru ca se subintelege ca este la baza modelului.
View.
Randeaza modelul intr-o forma potrivita interactiunii,de obicei elementu interfata utilizator. Pot exista vizualizari/teme multiple pentru un singur model pentru mai multe intrebuintari.
Controller.
Proceseaza si raspunde la evenimente, de obicei actiunile facute de utilizatori si poate invoca modificari la model.
MVC este deseori intalnit in aplicatii web unde view este chiar pagina html, controllerul este chiar codul care aduna datele dinamice si genereaza continut in interiorul HTML.
Descrierea a fost preluata si tradusa de la adresa:
http://en.wikipedia.org/wiki/Model-view-controllerTot acolo veti gasi si cateva dintre framework-urile MVC existente ce au la baza diferite limbaje de programare (php, java ,etc)