Choď na navigáciu

MVC model view controller v CakePHP

V dnešnom článku si detailne priblížime pohľad na celkovú architektúru frameworku a tou je architektúra Model View Controller. Porozumenie MVC je pre vývoj v CakePHP zásadné a tento článok vás ponorí do tajov tohto návrhového vzoru z pohľadu daného frameworku.

Článok je voľne inšpirovaný v Cookbook::Un­derstanding Model-View-Controller. Týmto by autor chcel požiadať ostatných, ktorí by mali záujem na preklade Cookbook do slovenského jazyka, nech vyjadria svoj postoj v diskusii k článku.

Úvod

CakePHP je postavený na návrhovom vzore MVC. Pri programovaní aplikácií postavených na tomto návrhovom vzore, MVC rozdeľuje danú aplikáciu na 3 základné vrstvy

  1. Model – reprezentuje dáta aplikácie
  2. View – zobrazuje dáta modelu
  3. Controller – prijíma požiadavky od klienta a na základe konkrétnych požiadaviek riadi beh aplikácie

Obrázok znázorňuje request od klienta a jeho následné spracovanie v CakePHP. Pre ilustráciu si predstavme, že klient nazvaný „Ricardo“ klikol na odkaz „Buy A Custom Cake Now!“ na domovskej stránke našej web aplikácie.

  1. Ricardo klikol na odkaz smerujúci na adresu www.example.com/cakes/buy a jeho prehliadač vytvoril request na váš webový server.
  2. Dispatcher kontruluje request URL (/cakes/buy) a smeruje daný request na správny controller.
  3. Controller vykonáva určitú logiku aplikácie. Pre príklad, controller môže kontrolovať, či je Ricardo prihlásený.
  4. Controller taktiež používa modely na získanie prístupu k aplikačným dátam. Modely najčastejšie reprezentujú databázové tabuľky, ale môžu byť taktiež reprezentované LDAP entitami, RSS kanálmi alebo súbormi v systéme. V našom príklade controller používa model na získanie Ricardových posledných nákupov z databázy.
  5. Controller okrem iného predáva dáta do ďalšej časti MVC architektúry nazvanej View. View vezme dáta a pripraví ich pre zobrazenie v klientovi. Views sú v CakePHP najčastejšie vo formáte HTML, avšak môžu byť aj jednoducho vo formáte PDF, XML alebo v inom formáte.
  6. Akonáhle view kompletne pripraví dáta pre zobrazenie, následne sú spracované dáta vrátené ako response do Ricardovho klienta.

Takmer každý request do vašej aplikácie bude nasledovať obdobný postup, preto je dobré si daný postup poriadne zapamätať a samozrejme mu aj porozumieť.

Výhody

Prečo používať MVC? Pretože je to je ustálený návrhový vzor, ktorý pretvorí aplikáciu na udržateľný, modulárny a rýchlo sa vyvíjúci balík. Nové vlastnosti sú pridávané jednoducho a staré rysy dostávajú novú tvár. Modulárny a oddelený návrh taktiež umožňuje developerom a návrhárom pracovať súčasne, zahŕňa taktiež možnosť rychlého prototypovania. Separácia taktiež umožňuje developerom robiť zmeny v jednej časti aplikácie bez ovplyvnenia zvyšných častí.

Ak ste nikdy predtým nevyvíjali aplikáciu touto cestou, určite to zaberie určitý čas zoznámiť sa s návrhovým vzorom MVC, ale som presvedčený, že ak tak raz urobíte, nikdy to nebude chcieť robiť inak.

Povedz o článku aj ostatným - www.pridej.cz

Hodnotenie článku: 48%
Počet hodnotení: 64

zlýdobrý

Komentáre k článku

Nový komentár

  1. Titulok: ine navrhove vzory na web
    Autor: jano
    Vytvorený: 02. 04. 2008 11:37

    nie ze by som chcel opustit MVC, ale zaujimalo by ma ake su ine pouzivane, vhodne … navrhove vzory pri tvorbe web aplikacii?

  2. Titulok: oddeleni v cakephp
    Autor: peter
    Vytvorený: 06. 04. 2008 12:55

    a jak se vlastne lisi/implementuje MVC v CakePHP od obecneho MVC?

  3. Titulok: RE: oddeleni v cakephp
    Autor: Tibor
    Vytvorený: 07. 04. 2008 12:13

    No implementovany je podla beznym sposobom. Avsak si treba uvedomit, ze CakePHP nie je framework, ktory len vyuziva MVC, ale je to priamo MVC framework, ktory ma prave MVC ako zakladnu kostru a ziadnym inym sposobom nemoze byt aplikacia rozvrstvena.

    Niekomu takyto pristup vyhovuje, inemu zas nie.

  4. Titulok: slovenčina
    Autor: Avandgard
    Vytvorený: 21. 12. 2008 21:05

    Podľa mňa nie je potrebné prekladať cookbok, pretože väčšina ludí čo sa učila php musela/čerpá s anglických návodov a manuálov. Takže domnievam sa že by to bolo zbytočné, i keď pooznám pár ľudí ktorí začali rovno s cakePHP, skôr ako poznali PHP :-D