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::Understanding 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
- Model – reprezentuje dáta aplikácie
- View – zobrazuje dáta modelu
- 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.
- Ricardo klikol na odkaz smerujúci na adresu www.example.com/cakes/buy a jeho prehliadač vytvoril request na váš webový server.
- Dispatcher kontruluje request URL (/cakes/buy) a smeruje daný request na správny controller.
- Controller vykonáva určitú logiku aplikácie. Pre príklad, controller môže kontrolovať, či je Ricardo prihlásený.
- 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.
- 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.
- 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.
Súvisiace články
-
Kategórie
- Tipy a triky (28)
- Články (8)
- Fantom CMS (4)
- Zábava (2)
- Začíname s CakePHP (6)
-
Najčítanejšie články
-
Novinky
-
Seriál o CakePHP na www.debug.sk
15. 10. 2008
Od 7. októbra vychádza nový seriál o CakePHP na serveri zameranom na programovanie s názvom Debug.sk Autorom seriálu je autor tohto webu a kto by mal záujem, môžete daný seriál podporiť jeho prečítaním.
-
-
Nálepky
-
Nedávne komentáre
-
Rss kanály

Komentáre k článku
Nový komentár
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?
Titulok: oddeleni v cakephp
Autor: peter
Vytvorený: 06. 04. 2008 12:55
a jak se vlastne lisi/implementuje MVC v CakePHP od obecneho MVC?
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.
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