Divatos a webes programozásban manapság az MVC szemlélet. Majdnem minden ismert és kevésbé ismert keretrendszer ezen módszertan elveit követi.
Az MVC egy rövidítés, az angol Model - View - Controller szavakból ered. Magyarul modell - nézet - vezérlő néven ismerhetik. A lényege az, hogy az adatokat szétválasszuk a megjelenítéstől, így egymástól függetlenül tudjuk tetszés szerint fejleszteni és változtatni mind az adatstruktúrákat, mind a megjelenítés elemeit.
A különböző részek az alábbiak szerint kapcsolódnak egymáshoz a webes alkalmazásokban:
A nézet az aktuálisan megjelenített HTML oldal, a vezérlő a szerveren futó (a mi esetünkben PHP) kód, a modell pedig a konkrétan tárolt adatok, amelyek lehetnek adatbázisban, XML-ben, vagy akár egyszerű szöveges vagy bináris fájlban.
Sematikusan:
(Felhasználó <==> [ HTML oldal ]) <===== HTTP(S) csatorna ====> { [ PHP kód ] <==> [ Adatbázis ] }
A működés egyszerűsítve így nézhet ki:
A felhasználó egy eseményt generál (pl. megnyom egy gombot), az esemény hatására a hozzátartozó adatok (pl. egy űrlap mezői) a HTTP(S) csatornán átutaznak a szerverre (piros rész), ahol a PHP kód egy előre meghatározott forgatókönyv alapján feldolgozza az érkező adatokat (pl. a $_POST változó adatait), és azokat az adatbázisba írja (pl. MySQL adatbázisba), esetleg az adatbázisból kiolvassa a kért adatokat, és visszaküldi azokat a felhasználónak.
A modell és a nézet szétválasztásával csökkenthetjük a programjaink bonyolultságát, valamint az utólagos bővítést és átírást is könnyebbé tehetjük.
Egy nagyon primitív és egyszerű példán keresztül lássuk a szemléletet a gyakorlatban:
├── controller
│ └── mycontroller.php
├── index.php
├── model
│ └── mymodel.csv
└── view
├── myform.html
└── valasz.html
A mycontroller.php végzi a munkát: a view mappa myform.html-én keresztül begyűjtött adatokat a model mappa mymodel.csv fájljába írja, majd a valasz.html-en keresztül kilistázza a mymodel.csv tartalmát. Az index.php csupán a mycontroller.php befoglalását tartalmazza, semmi egyebet.
A házi feladat legyen a fenti séma kidolgozása, a myform kérjen be 2 adatot: egy nevet és egy email címet. A kész megoldást a https://www.facebook.com/virustalanitas/ oldalon lehet elkérni, ha nem sikerül egyedül!