PHP MVC

Acest articol se doreste a fi primul din seria articolelor legate de PHP MVC – ce este, de ce ai vrea sa il folosesti si pe care dintre ele, si in cele din urma, cum.

Sar peste explicarea acronimului si trec direct la “de ce MVC?”, mai exact “de ce PHP MVC?” desi ideea poate fi extinsa si la celelalte limbaje de progamare.

Ai nevoie sa lucrezi cu MVC (PHP) daca…

  • Ai o experienta destul de mare cu PHP si esti la curent cu tot ce e nou in fiecare versiune de PHP incepand cu PHP 5 (macar superficial)
  • Te-ai saturat sa copiezi acelasi HTML in fiecare pagina, ca apoi cand vine vorba sa schimbi ceva la design trebuie sa actualizezi HTML-ul din toate cele 1000 de pagini ale siteului tau
  • Te-ai saturat ca atunci cand iei cod de la un site precedent in vederea implementarii lui la un alt site, sa modifici alte zeci de linii de cod pentru a ajunge la rezultatul dorit
  • Atunci cand vrei sa schimbi o simpla interogare SQL vezi si HTML si PHP, distragandu-ti atentia si obosindu-ti ochii
  • Vrei sa te apuci serios de WebDevelopment
  • Vrei sa scoti bani frumosi din WebDevelopment
  • Vrei sa faci o forma HTML si sa o validezi, fara sa scrii nici macar un pic de HTML (unless… esti mai cu motz cum sunt eu, si trebuie neaparat sa ai grija si de artificii CSS :]), fara sa faci 1000 de if-uri care sa valideze inputul utilizatorului in vederea depistarii potentialelor atacuri si blocarii lor, fara sa ai pe aceeasi pagina atat afisarea erorilor cat si validarea inputului si de asemenea nu vrei sa mai iti pierzi timpul afisand si erorile si populand in acelasi timp forma cu valorile deja trimise de utilizator, pentru a nu-l enerva si a-l face s’o stearga de pe siteul tau pentru ca nici macar bunavointa de a-i memora in campuri ce valori a bagat nu ai avut-o (da da, ai auzit bine, exista ceva care iti va usura munca asta fooooaarte mult)
  • Vrei ca o forma HTML cu tot cu validarea ei si actiunile luate in urma acestei validari sa nu fie scrie in mai multe fisiere, cu peste 100 de linii de cod in total, ci vrei ca toata afacerea sa te coste maxim 10 linii de cod
  • Vrei sa ai codul PHP separat de HTML intr-o maniera mai organizata decat ai putea-o crea tu de la 0
  • Vrei sa faci aplicatii sau siteuri care sunt validate cu succes de W3 XHTML Validator
  • Vrei ca siteurile tale sa fie vazute cu ochi mai buni de motoarele de cautare pentru ca folosesti XHTML valid si nu un simplu HTML ciobanesc, urat si greu de citit
  • Vrei sa te acomodezi cu modul in care ti se cere sa lucrezi atunci cand te duci sa te angajezi ca webdeveloper
  • Vrei ca oricine sa-ti poata intelege codul, ca si tu la randul tau sa poti intelege mai usor codul altora, intrucat orisice chestie in PHP “pur” poate fi scrisa intr-un fel de un programator, si intr-un alt fel de un alt programator iar uneori poate fi cu mult mai greu de inteles asta in PHP “pur” decat in cazul in care cei 2 programatori s-ar folosi de conventiile unui MVC
  • Te-ai saturat sa scrii o gramada de linii de cod HTML + PHP + MySQL ca sa poti face o simpla chestie precum un login
  • … si inca odata – daca dimineata servesti PHP, la pranz servesti PHP, seara servesti PHP, noaptea servesti PHP si intre mese servesti PHP :)

Ok, stiu ca ultima poate i-a speriat pe multi dintre voi INSA NU asta ii era scopul. Ideea este ca nu te poti apuca direct de un MVC fara sa ai ceva mai mult decat cunostinte de baza in limbajul de programare respectiv.

Lista de mai sus cu “de ce MVC” o voi tot updata cu sau fara ajutorul vostru, al prietenilor etc.

Asadar, din cele de mai sus putem trage concluzia ca un MVC…

  • iti permite sa faci mai multe cu mai putin cod ca simplu programator (desi in spatele scenei se afla tone de linii de cod, si care nu sunt intocmai neimportante pentru programator, cel putin NU atata timp cat acest programator vrea mai multe de la MVC)
  • a fost proiectat intocmai pentru a spori productia si mentenanta de aplicatii intr-un timp foarte scurt
  • este mai usor de spart in bucati, de a lua aceste bucati si a le implementa in alta parte salvand timp pretios
  • este foarte util atunci cand mai multi programatori creeaza si menteneaza aplicatiile facute in stil MVC
  • ceea ce vede utilizatorul este total separat de procesarea informatiilor si stocarea datelor

Astfel ajungem si la explicare acronimului MVC.

MVC = Model View Controller. Desi sunt multe definitii oarecum complexe pe net, eu voi defini asa cum cred eu ca este mai bine si anume un ansamblu in care, la nivel de programare, ceea ce vede utilizatorul este total separat de procesarea informatiilor si de locul unde se afla aceste informatii.

Cu alte cuvinte, cand vreau sa modific felul in care se afiseaza informatia utilizatorului ma voi duce in VIEW (aici practic vorbim de simple HTML-uri, printre care se regasesc simple afisari PHP – echo-uri). Cand vreau sa modific felul in care este procesat inputul utilizatorului in vederea afisarii unei informatii ma voi duce in CONTROLLER. Si in fine, accesarea datelelor se face prin MODEL.

Altfel spus…

  • VIEW = ce vede utilizatorul
  • CONTROLLER = cum s-a ajuns la ceea ce vede utilizatorul (procesele – bazate sau nu pe inputul/informatiile legate de identitatea utilizatorului – din spatele VIEW)
  • MODEL = partea care se ocupa cu citirea/scrierea de informatii intr-un mediu de stocare (de cele mai multe ori aici ne referim la o baza de date, dar poate fi de asemenea un fisier sau un orice alta sursa de stocare deja existenta sau definita de programator)

Inainte sa incepem

Am vorbit mai sus de faptul ca nu e foarte ok sa ai 1000 de pagini care implementeaza acelasi layout, dar care este copiat in fiecare dintre aceste pagini si este foarte enervant apoi sa modifici aceste pagini cand vine vorba sa schimbi designul (lucru care poate parea neobisnuit pentru unii, sa schimbi designul).

Sunt foarte multi care folosesc un master page. Adica din fisierul index.php se indexeaza si restul paginilor, astfel vedem linkuri de genul http://exemplu.ro/index.php?pagina=contact. Daca nu ai lucrat cu un master page atunci ai face bine sa faci niste google-ing pe tema asta (PHP master page) inainte sa te apuci de MVC, pentru ca in mare aceasta varianta se apropie mai mult de acest stil de lucru.

Temerile incepatorilor sunt nejustificate

La inceput, sa lucrezi cu un PHP MVC iti poate da falsa impresie ca ceea ce faci intr-un astfel de MVC este cu mult mai greu decat ai face-o intr-un simplu fisier .php si asta deoarece codul se imparte in mai multe fisiere si – ma crezi sau nu – are logica (imi amintesc ca inca de la inceput incercam sa gasesc tot felul de hibe la stilul MVC din simplul motiv ca mi se parea greu, insa vorba lui Brancusi – “Lucrurile nu sunt greu de facut. Greu este sa te pui in postura de a le face.“)! O alta chestie pe care ii poate speria pe incepatori este faptul ca se lucreaza foarte mult cu clase. Ei bine, tot ceea ce tine de MVC-uri este OOP (objecte oriented programming), adica programare orientata pe obiecte. Desi am lucrat si prin VB si prin C++ si chiar si in PHP cu clase si obiecte, va spun ca mi-a fost frica inca de cand am aflat ca mai tot ce tine de PHP MVC e strans legat de clase si obiecte. Am ajuns insa la scurt timp dupa asta, la concluzia ca ma speriam degeaba. Chiar daca nu esti mare expert in clase si obiecte in PHP, inveti fortat si din mers despre acestea, si ma crezi sau nu, ajunge chiar sa-ti placa – nu de alta, dar sunt indispensabile si incredibil de utile :P .

Zend MVC

PHP MVC-ul pe care il recomand si cu care acum aprox. 2 saptamani am inceput sa lucrez cu el si cu care cred ca voi lucra multa vreme de acum incolo este Zend MVC. Zend MVC se foloseste de Zend Framework. Acest framework este, pe scurt, o librarie cu clase PHP pe care Zend MVC le implementeaza in scopul de a “se realiza”. Practic, Zend MVC reprezinta un ansamblu de foldere si fisiere, in intermediul carora se intializeaza “cu cap” obiecte de tipul claselor din Zend Framework, intr-o asa maniera incat programatorul, tinand cont de cateva conventii de partajare si numire a fisierelor/claselor/metodelor definite de acesta, sa poata incepe sa-si construiasca propria aplicatie.

… cam atat pentru inceput. Sunt convins ca nu v-a fost de prea mare ajutor intrucat am “aberat” mult nu am dat niciun exemplu, dar acest post este un material orientativ pe care este bine sa il recititi dupa ce gustati din exemple… asa se clarifica totul, incet dar sigur :) . Multa bafta si va mai astept p’aici :) … nu stiu inca sigur cand voi incepe, cert e ca va mai dura putin pentru ca am de gand sa-l fac cat mai usor de inteles.

0 Responses to “PHP MVC”



  1. No Comments Yet

Leave a Reply