3 Alapkoncepció
Bevezetés
Ebben a fejezetben röviden, tömören szeretnénk bemutatni a Cake-ben is megvalósított MVC koncepciót. Ha számodra új dolog az MVC (Model View Controller – Modell Nézet Vezérlő) filozófia, akkor semmiképp ne ugord át ezt a részt. Az MVC általános bemutatásával kezdjük, utána megnézzük, hogyan is lett megalósítva az MVC a CakePHP-ban, majd néhány egyszerű CakePHP példán keresztül megmutatjuk hogyan lehet alkalmazni.
Az MVC tervezési minta
A Model-View-Controller (Modell Nézet Vezérlő) tervezési minta segítségével logikailag csoportosíthatjuk a kódot, elősegítvén az újrahasznosítást, a karbantarthatóságot, és általában véve jobb kód készítését. Az MVC-t először a Gang of Four szerzői csoport írta le. Idézet Dean Helman által írt "Objective Toolkit Pro" fehér könyvből:
"Az MVC paradigma egy módszer arra, hogy hogyan osszunk egy alkalmazást, vagy akár egy alkalmazás felületének egy részét három részre: a Modellre, a Nézetre és a Vezérlőre. Az MVC-t eredetileg arra tervezték, hogy a hagyományos input, feldolgozás és output feladatok leképezzék a grafikus interfésszel rendelkező alkalmazásokban.
Adatbevitel – Feldolgozás – Eredmény kiírása
Vezérlő – Modell – Nézet"A felhasználói adatbevitel, a külső világ modellezése és a vizuális visszajelzés a felhasználó felé, e három tevékenység a Model (Modell), View (Nézet) és Controller (Vezérlő) objektumokra vannak szétválasztva és ezekben vannak lekezelve. A Controller értelmezi az adatbevitelt az egérről és a billentyűzetről, ezeket a felhasználói akciókat parancsokká képezi le, amely parancsok aztán a Model és/vagy View objektumok által feldolgozva előidézik a kívánt változásokat. A Model egy vagy több adatelemért felelős, információt nyújt az állapotukról, illetve képes azokat megváltoztatni. A View egy téglalap alakú kijelző területen jeleníti meg az adatokat, szövegek és grafikus elemek kombinációjaként."
A Cake terminológiájában a Model jelképezi az egyes adatbázis táblákat/rekordokat, és azok kapcsolatait más táblákhoz/rekordokhoz, valamint ez az egység tartalmazza az adat-érvényességi szabályokat, melyeket az adatok bevitelekor vagy frissítésekor kell figyelembe venni.
A View a Cake nézet fájlait jelenti, amelyek PHP kóddal beágyazott szabvány HTML fájlok.
A Cake Controller-e kezeli a szerver felőli kéréseket. Ez a modul fogadja a felhasználói adatbevitelt (GET vagy POST adatokon keresztül), megvalósítja az üzleti logikát, a Model-t felhasználva írja/olvassa az adatbázis és más adatvforrások adatait, és végül megjelenítendő adatokat küld a megfelelő View fájloknak.
Azért, hogy alkalmazásainkat a lehető legegyszerűbben építhessük fel, a Cake az alkalmazáson belüli objektumok interakciójának kezelésén felül a fájok tárolásának megszervezésére (lásd következő szakasz) is használja az MVC mintát.
A Cake fájlszerkezetének áttekintése
Amikor kicsomagoljuk a Cake-t, a szerveren a következő 3 fő könyvtárat találjuk:
app
cake
vendors appcakevendors
A cake mappában találhatók a rendszer magjához tartozó könyvtárak. Ezt a könyvtárat általában sosem kell módosítani.
Az app könyvtárban fognak elhelyezkedni az alkalmazásunk fájljai. A cake és app mappa különválasztásával lehetővé válik, hogy több app folder osztozzon egyetlen cake könyvtárrendszeren. Emiatt a CakePHP frissítése is egyszerűvé válik: csak töltsd le a Cake legfrissebb válozatát és másold a cake könyvtárba, felülírva a régi fájlokat. Nem kell aggódnod amiatt, hogy a saját alkalmazásod fájljait cseréled ki.
A vendor könyvtárban a mások által fejlesztett alkalmazásokat tároljuk. A későbbiekben részletesen ismertetjük ezeket, elöljáróban csak annyit, hogy az alapötlet az, hogy a Cake vendor() függvényének segítségével érhetjük el az itt lehelyezett osztályokat.
Lássuk egyben a fájlszerkezetet:
/app
/config - config fájlokat tartalmaz az adatbázishoz, ACL-hez, stb
/controllers - Vezérlők helye
/components - Komponensek helye
/index.php - Lehetővé teszi, hogy a cake a /app könyvtárat DocumentRoot-ként kezelje
/models - Modellek helye
/plugins - Plugin-ok helye
/tmp - cache és log fájlok helye
/vendors - külső alkalmazások helye
/views - Nézetek helye
/elements - elemek, kis nézet-darabok
/errors - testreszabott hibaüzenet oldalak helye
/helpers - Helperek/Segitők helye
/layouts - az alkalmazás layout fájljainak helye
/pages - statikus nézetlapok helye
/webroot - az alkalmazás DocumentRoot-ja
/css
/files
/img
/js
/cake - CAKE rendszerkönyvtár. Ne módosítsd.
index.php
/vendors - szerveroldali külső alkamazásokhoz használt könyvtár.
VERSION.txt - a telepített Cake rendszer verziószáma. /app/config - config fájlokat tartalmaz az adatbázishoz, ACL-hez, stb/controllers - Vezérlők helye/components - Komponensek helye/index.php - Lehetővé teszi, hogy a cake a /app könyvtárat DocumentRoot-ként kezelje/models - Modellek helye/plugins - Plugin-ok helye/tmp - cache és log fájlok helye/vendors - külső alkalmazások helye/views - Nézetek helye/elements - elemek, kis nézet-darabok/errors - testreszabott hibaüzenet oldalak helye/helpers - Helperek/Segitők helye/layouts - az alkalmazás layout fájljainak helye/pages - statikus nézetlapok helye/webroot - az alkalmazás DocumentRoot-ja/css/files/img/js/cake - CAKE rendszerkönyvtár. Ne módosítsd.index.php/vendors - szerveroldali külső alkamazásokhoz használt könyvtár.VERSION.txt - a telepített Cake rendszer verziószáma.
