Keretrendszerek
Download
Report
Transcript Keretrendszerek
Szerver oldali
keretrendszerek
Web-adatbázis programozás
Horváth Győző, Menyhárt László, Tarcsi Ádám
2009. szeptember. 17.
Keretrendszerek
Alapelemeket biztosító programozási
rendszerek, melyek összetett feladatokat
képesek támogatni.
Egy vázat adnak alkalmazásaink számára.
Bizonyos filozófiának megfelelő szabályok
gyűjteménye
Gyakori, ismétlődő műveleteket támogatnak,
sablonokat biztosítanak:
▪ munkamenetek,
▪ adatbázis kapcsolatok,
▪ hibakezelés, stb.
2
Miért van szükség keretrendszerekre?
Ömlesztett kód: HTML(, CSS), PHP, egyben van
Ömlesztett logika: vezérlés, adatelérés,
megjelenítés, feldolgozás, alkalmazáslogika
egyben van
Csoportmunka nem lehetséges
Konfiguráció kódba épített
Karakterkódolás eltérő lehet a HTML-ben, PHPban és adatbázisban, nincs egységesen kezelve
Több belépési pontja van az alkalmazásnak, ami
biztonsági és jogosultsági kérdéseket vet fel
3
Keretrendszerek
Előnyök
▪ Fejlesztési időt takarítható meg
▪ Rákényszerítik a programozót valamilyen kódolási
standard-re átláthatóbb kódok
▪ Valamilyen szabályrendszert alkalmazását várják el.
▪ Támogatják az újra felhasználhatóságot
▪ Egységesebb alkalmazásfejlesztés
▪ Szétválasztott kód és logika
▪ Meghatározott könyvtárszerkezet
▪ Csoportmunka támogatott: külön fileok az egyes
szakembereknek (designer, adatbázisos, felületfejlesztő,
stb.)
▪ Rétegek szétválasztása
Hátrányok
▪ Tanulásokhoz idő kell
▪ Szabályok korlátokat is jelentenek
4
Keretrendszerek - példák
Vastag-kliens RAD: Visual Studio, Borland
Delphi, …
PHP: CodeIgniter, Symfony, Zend
Framework, CakePHP, …
PHP keretrendszerek tartalomkezelő
szolgáltatásokkal: Drupal, Joomla!,
Wordpress, …
JavaScript: JQuery, Prototype,
script.aculo.us, Yahoo YUI, ExtJS
5
Mi a probléma az eddigi web-fejlesztési
gyakorlattal?
Nagyobb munkák írása egyre nagyobb
nehézségekbe ütközik
A kód felesleges elágazásokat tartalmaz,
nem lehet tudni, mikor mi hívódik meg
6
PHP KERETRENDSZEREK
7
Front Controller
Minden oldalt érintő közös műveletek egy
helyen szerepelnek:
▪
▪
▪
▪
▪
Konfiguráció beolvasása
Autentikáció
Autorizáció
Input paraméterek előfeldolgozása, szűrése
Karakterkódolás
1 belépési pont: index.php
Hogyan jelezhető, melyik oldalt kell
megjeleníteni?
▪ hidden mező
▪ GET paraméterrel: index.php?oldal=main
8
Példa: Front Controller – 1.
switch ($oldal) {
case "index":
index();
break;
case "page1":
page1();
break;
case "page2":
page2();
break;
case "page3":
page3();
break;
default:
index();
}
function index() {
}
function page1() {
}
function page2() {
}
function page3() {
}
9
Példa: Front Controller – 2.
if
(function_exists($oldal)) {
call_user_func($oldal);
}
function index() {
}
function page1() {
}
function page2() {
}
function page3() {
}
10
Példa: Front Controller – 3.
switch ($oldal) {
case "index":
include "v3_index.php";
break;
case "page1":
include "v3_page1.php";
break;
case "page2":
include "v3_page2.php";
break;
case "page3":
include "v3_page3.php";
break;
default:
include "v3_index.php";
}
11
Példa: Front Controller – 4.
if (file_exists("v3_" . $oldal . ".php")) {
include_once("v3_" . $oldal . ".php");
}
12
Model-View-Controller
(Modell-Nézet-Vezérlő - MVC)
A FrontController nem segít az egyes rétegek
szétválasztásában.
▪ A kód ugyanúgy ömlesztett marad az egyes
részmodulokban
Összetett, sok adatot kezelő alkalmazásokban
elvárható:
▪ Az adatok (modell) és a felhasználói felület
(nézet) szétválasztása.
▪ A nézet ne befolyásolja az adatkezelést.
▪ Az adatok átszervezhetőek legyenek a
felhasználói felület változtatása nélkül.
13
MVC – 2.
Az MVC tervezési minta elkülöníti az adatok
elérését és az üzleti logikát az adatok
megjelenítésétől és a felhasználói interakciótól
egy közbülső összetevő, a vezérlő
bevezetésével.
▪ Model: az adatokat, praktikusan az adatbázisbeli
táblák, néha beleértik ezek elérését segítő kódot
vagy magát az üzleti réteget is
▪ View: megjelenítésért szükséges réteg
▪ Controller: vezérlést végzi, értesíti a Modelt és a
Viewt is a változásokról, kezeli az input adatokat.
Össze szokás kapcsolni a FrontController
mintával
14
MVC: Oldal életciklusa – 1.
15
MVC: Oldal életciklusa – 2.
Példa: CodeIgniter
16
Saját MVC keretrendszer készítésének
menete
Elvárások, szabályok megfogalmazása
Könyvtárszerkezet
View, template (PHP nyelvi elemek: echo,
for, foreach, while)
Front Controller (index.php)
Model elkészítése
17