Az MVC tervezési minta 2. előadás
Dióhéjban… Mi az MVC? M - Model V - View C - Controller ZF megvalósítások
Mi az MVC? Tervezési minta (Design Pattern) Ma már elengedhetetlen Összetett alkalmazások, leggyakoribb a webes alkalmazásoknál Átláthatóbb kódok Különválasztás: üzleti logika, megjelenés, vezérlés Csapatmunka!!
Az MVC design-pattern ábrában
M - Model A webalkalmazás által kezelt információk adatreprezentációs rétege Legtöbb esetben relációs adatbázis, vagy XML formában elérhetőek Az elérési réteg szintén a modell része Modell használatával képesek vagyunk kiegészíteni adatbáziskezelőnket olyan funkciókkal, amiket alap esetben nem tudna. Pld. MySQL-ben táblák közti kapcsolatok kezelése
V - View A view (megjelenítés) az összekötő réteg a rendszer és a felhasználó között Megjeleníti a modellt egy megfelelő alakban Alkalmas legyen felhasználói interakciókra Jellemzően felhasználói felületi elem (pl. táblázat) Különböző célokra különböző nézetek létezhetnek ugyanahhoz a modellhez.
C - Controller Összeköti a model-t a view-val A modell adatait feldolgozva értelmezhető formában átadja a megfelelő értékeket a view-nak A kódolás legfontosabb helye (action metódusok) Az eseményeket, jellemzően felhasználói műveleteket dolgozza fel és válaszol rájuk, illetve a modellben történő változásokat is kiválthat.
MVC működési elv A felhasználó valamit csinál a felületen. A controller kezeli a bejövő eseményt. A vezérlő kapcsolatot teremt a modellel, esetleg módosítja azt. A nézet a modell alapján megfelelő felhasználói felületet hoz létre. A modellnek nincs közvetlen tudomása a nézetről. A felhasználói felület újabb eseményre vár.
MVC példa Egy ügyfél a WebShop alkalmazásban a „Rendelés elküldése” gombra kattint, akkor a megfelelő adatbázisrekord egy megfelelő oszlopába bekerül egy jelzés, miszerint a kiválasztott tételeket a felhasználó szeretné megvásárolni. A view értesítése esetünkben úgy történik, hogy csinálunk egy viewscript-et, aminek neve legyen kosz_a_vasarlast.phtml. Ez a fájl egy – a nevéhez hű – köszönőszöveget tartalmaz, mely a rendelés adatait az adatbázisból olvassa ki közvetve.
Zend Framework-ös megvalósítás Model: osztályok, táblánként 2 View: phtml kiterjesztésű scriptek (action-önként 1 db) Controller: osztályok, actionökkel, mint metódus
Zend Framework-ös megvalósítás A Zend Framework-ben: Model - Zend_Db View - Zend_View Controller - Zend_Controller Dispatcher és Router: A böngészőnek adott URL-t feldolgozzák és átadják a vezérlést a controller számára. A controller a model-beli adatokkal dolgozik, és ezeknek a kimenetét átadja a view-nak, ami megjeleníti azokat.
Zend Framework-ös megvalósítás A viewscriptekben nagyon fontos arra figyelni, hogy viewhelpereken kívül függvényhívás és változóknak értékadás NE! szerepeljen a kódban! Legegyszerűbb azt a módszert követni, hogy az adatbázis lekérdezéseket a model-be tegyük, a feldolgozó kódot a controller megfelelő action- jébe, a viewscriptbe pedig már csak írassuk ki a kapott változók tartalmát.
DEMO Az előzőleg megírt kód tanulmányozása MVC szemszögből.