Xây Dựng Nền Tảng Hỗ Trợ Lập Trình Web Dựa Trên Mô Hình Mvc

  • Upload
    namnam

  • View
    31

  • Download
    1

Embed Size (px)

Citation preview

LI CM N

Li u tin, ti xin gi li cm n chn thnh ti thy gio, Tin s Trng Ninh Thun, ngi hng dn v ch bo tn tnh cho ti trong sut qu trnh hc tp cng nh thc hin kha lun tt nghip ny.

Ti cng xin cm n cc thy, c gio ch dy trong sut thi gian gian ti hc tp ti trng i hc Cng Ngh - i hc Quc Gia H Ni. Cm n cc bn Hong nh Quang, Nguyn Vn V, Phan Trng Khanh, m Thanh Tng, nhng ngi bn tt gip ti v mt k thut trong qu trnh nghin cu, xy dng sn phm c trnh by trong kha lun tt nghip ny.

Ngoi ra, ti mun gi li cm n ti b m, ngi thn trong gia nh - nhng ngi ht sc ng h, gip v ng vin ti trong sut qu trnh hc tp qua.

Cui cng, ti xin gi li cm n chn thnh v su sc ti Ban Gim c cng ty TNHH ISDS to mi iu kin v c s vt cht gip ti hon thnh kha lun ny. TM TT KHA LUNKha lun tt nghip ny trnh by mt s hiu bit c bn v cc nn tng h tr lp trnh ng dng web (Web application framework) v m hnh MVC (Model View Controller) cng nh vai tr ca cc thnh phn MVC trong Web framework. Qua gii thiu mt framework t xy dng bng ngn ng PHP vi cc u im v cu trc v tc so vi cc PHP framework hin nay. Framework c t tn l Hiphop framework.

Phn chnh ca kha lun tp trung gii thch phng thc vn hnh ca ng dng c xy dng bng Hiphop, bc u gip cc nh pht trin nm c cch thc xy dng ng dng trn Hiphop.

Phn cui ca kha lun gii thiu cc th vin, hm tch hp trong Hiphop h tr ngi lp trnh trong qu trnh pht trin ng dng

MC LC6CHNG 1: KHI NIM V WEB APPLICATION FRAMEWORK V M HNH MVC

61.1 Web Application Framework l g?

61.2. PHP Framework

71.3 MVC l g?

71.3.1. Lch s MVC

81.3.2. Vai tr ca cc thnh phn M-V-C trong Web framework

13CHNG 2. GII THIU FRAMEWORK XY DNG

132.1. Tng quan v framework xy dng

162.2. Kin trc ca Hiphop framework

162.2.1 Tng qut v h thng th mc trong Hiphop framework

172.2.2 Cc thnh phn ct li

23CHNG 3. CC KHI NIM BAN U KHI XY DNG NG DNG WEB BNG HIPHOP FRAMEWORK

233.1. Hiphop URLs

233.2. Cc lp Controller

253.3. View - Template

283.4. Cc lp Model

CHNG 4: H THNG CC LP TH VIN 30V HM H TR

304.1 Cc lp th vin

304.1.1. Email library

314.1.2. Database library

334.1.3. Phn trang vi Pagination class

344.1.4. Qun l Session PHP vi session class

354.1.5. To hnh nh Captcha vi Captcha class

364.1.6. Ti file ln server vi Upload class

364.1.7. Ti file vi giao thc FTP - FTP class

364.2 Cc Helper

364.2.1. Array Helper

374.2.2. Text Helper

384.2.3. URL helper

40CHNG 5: P DNG HIPHOP FRAMEWORK XY DNG TRANG BLOG C NHN

44KT LUN

DANH SCH CC HNH NHHnh 1 1: M hnh MVC99Hnh 1 2: Biu tun t mt chui MVC n gin

10Hnh 2 1: M hnh MVC c p dng trong Hiphop framework

17Hnh 2 2: Cu trc cy th mc Hiphop framework

18Hnh 2 3: Quy trnh x l mt HTTP request - Hiphop framework

19Hnh 2 4: M phng cu trc cc thnh phn ct li trong Hiphop framework

Hnh 2 5: Lp Registry20Hnh 2 6: Lp Router21Hnh 2 7: Lp Output21Hnh 2 8: Lp Loader21Hnh 2 9: Lp Controller2224Hnh 3 1: V d mt URL Hiphop framework

26Hnh 3 2: Minh ha S phn cp controller trang web

28Hnh 3 3: blogview.php

28Hnh 3.4: header_view.php

Hnh 5 1: Giao din Blog41

LI M UTrong nhng nm gn y, cc ng dng web ln lin tc c to ra, nh du nhng bc pht trin nhy vt v cng ngh trong th gii lp trnh. Cc nn tng h tr lp trnh cng c xy dng hng lot nhm mc ch chnh l ci thin tc thc thi v nng cao tnh bo mt cho cc ng dng web. Cc nn tng h tr lp trnh ng dng (application framework) u cha ng cc kinh nghim ca cc nh kin trc phn mm sau nhiu nm chim nghim trong th gii lp trnh. Vi n lc lm gim thi gian pht trin mt ng dng web, bng vic hc hi v tip thu nhng u im ca cc framework hin nay, chng ti xy dng c mt nn tng h tr lp trnh cc ng dng web c vit bng ngn ng PHP. Kha lun ny trnh by cc khi nim cn thit trc khi bt tay xy dng mt nn tng lp trnh, ng thi gii thiu nn tng m chng ti xy dng thnh cng.

CHNG 1: KHI NIM V WEB APPLICATION FRAMEWORK V M HNH MVC

1.1 Web Application Framework l g?Web application framework l mt nn tng phn mm c thit k h tr vic pht trin cc website ng, cc ng dng web v cc dch v web. Mc ch ca Framework l nhm ti vic gim bt cc hao ph lin quan ti cc hot ng thc hin trong qu trnh pht trin web. V d, nhiu framework cung cp th vin truy cp c s d liu, khung khun mu v qun l phin lm vic, thm vo lm tng kh nng ti s dng m.1.2. PHP Framework

PHP framework l web framework c vit bng PHP - mt ngn ng lp trnh ngun m ph bin nht hin nay. Ni dung kha lun cp ti PHP Framework l do PHP l ngn ng rt linh hot, c cc lp trnh vin a chung s dng khi tin hnh xy dng cc ng dng web c ln (Facebook, Flickr, Twitter). Bn cnh PHP c mt cng ng s dng ln, lun bit h tr ln nhau. Nhng chnh tnh linh hot, d hc, d s dng ca PHP i khi lm cc lp trnh vin ch quan, thng ch ch ti vic ng dng ca mnh chy c hay khng m khng quan tm ti tnh sng sa trong vic t chc m phc v cho mc ch bo tr di lu. Cha k ti vic vn an ton, bo mt cho ng dng web ngy cng b xem nh. y l lc h cn ti mt PHP framework.S c mt ca PHP framework lm cho vic pht trin ng dng web tr nn tri chy hn bng vic cung cp mt cu trc c bn xy dng nhng ng dng . Hay ni cch khc, PHP Framework gip cc lp trnh vin thc y nhanh chng qu trnh pht trin ng dng, tit kim c phn ln thi gian, tng s n nh cho ng dng, v c bit l gim thiu s ln phi vit li m. Khng ch th, cc framework cn c bit hu ch vi nhng lp trnh vin t kinh nghim, gip h c th xy dng cc ng dng mang tnh chun ha hn nh vic tng tc chnh xc gia vic x l c s d liu (database), m PHP v giao din (HTML) mt cch ring bit.Cc PHP framework hin nay hu ht u cung cp sn cc module nn tng cn thit v th vin m lnh chun (kt ni database, qun l session, template engine) xy dng ng dng.

tng chung ng sau kin trc ca mt PHP Framework c k n l m hnh MVC. Mt m hnh khng mi nhng mang li nhiu cm hng cho cc chuyn gia lp trnh trong nhiu nm qua. Chng ta s cng tm hiu cc khi nim v c im ca m hnh M-V-C.1.3 MVC l g?MVC l ch vit tt ca Model-View-Controller, mt mu kin trc (architectural pattern) c to ra nhm gii quyt cc vn pht sinh cng nh cc gii php t chc m trong qu trnh pht trin phn mm. Khi s dng ng cch, mu MVC gip cho ngi pht trin phn mm c lp cc nguyn tc nghip v v giao din ngi dng mt cch r rng hn. Phn mm pht trin theo mu MVC to nhiu thun li cho vic bo tr v cc nguyn tc x l nghip v v giao din t c lin quan vi nhau.

1.3.1. Lch s MVCBt u vo nhng nm 70 ca th k 20, ti phng th nghim Xerox PARC Palo Alto. S ra i ca giao din ha (Graphical User Interface) v lp trnh hng i tng (Object Oriented Programming) cho php lp trnh vin lm vic vi nhng thnh phn ha nh nhng i tng ha c thuc tnh v phng thc ring ca n. Khng dng li , nhng nh nghin cu Xerox PARC cn i xa hn khi cho ra i ci gi l kin trc MVC (vit tt ca Model View Controller). Kin trc MVC c ng dng xy dng rt nhiu th vin ha khc nhau. Tiu biu l b th vin ha ca ngn ng lp trnh hng i tng SmallTalk (cng do Xerox PARC nghin cu v pht trin vo thp nin 70 ca th k 20). Ngy nay, trong nhiu cc nn tng lp trnh chng ta thy s c mt ca m hnh MVC, c th k n:

+ Swing Components ca Java+ Document View Architecture trong Microsoft Visual C++ (VC++) + QT4(KDE)

+ Apples Cocoa (Core Data)1.3.2. Vai tr ca cc thnh phn M-V-C trong Web framework

Hnh 1.0.1 M hnh MVC

a. C - Controller

Controller l cc lp iu khin lung ng dng, tip nhn yu cu ngi dng thng qua HTTP header, sau chuyn tip n n cc lp ph trch trc tip x l yu cu. Ty theo cch thit k lp m chng ta thng thy Controller gm:+ Front Controller. L mt controller x l tt c cc yu cu ngi dng cho website. Fron Controller c nhim v hp nht tt c cc x l yu cu vo mt knh yu cu thng qua mt i tng.

+ Dispatcher: Lp iu phi hng cc iu khin i mc cao hn+ Request: x l mt phn d liu u vo mc GET, POST

+ Session: x l mt phn d liu u vo mc SESSION

Ty theo d liu u vo, Controller s thc hin cc php lc (vi dch v ly t Model), cc tnh ton la chn (Action Mapping) da trn kin trc v cu hnh nhm xc nh thnh phn lp chnh s thc hin yu cu ca ngi dng. Hiu mt cch n gin, Controller l thnh phn trung gian gia View v Model. N nhn d liu nhp vo qua View, sau gi Model tng ng ri ly kt qu tr v t Model ny. Tip theo, mt View thch hp s c la chn. Controller s chuyn tip d liu vo view n x l.

Mt s hot ng thng thy ca Controller: To form, gi tin nhn n form yu cu kim tra d liu To cc dch v lin quan n nghip v ng dng, yu cu cc lp dch v tng tc vi ngun d liu tr v hay thay i trng thi d liu: thc hin cc thao tc chuyn i d liu, kim tra quyn truy cp trn mt hot ng c th, tng tc vi database, tng tc vi cc web services. To i tng view, gn cc ngun d liu ly c t i tng dch v vo cho view.b. M - Model

Model l cc lp cung cp d liu, dch v lin quan n d liu v cc vn x l logic nghip v. Model c th: nh gi tnh hp l ca d liu.

V d kim tra d liu vo c ng vi nguyn tc ca h thng khng

Chuyn i d liu. V d chuyn i nh dng file, chuyn i t gi, chuyn i ngn ng a ra quyt nh v nghip v. V d a ra cc d liu, li khuyn t vn u t da trn d liu u vo ca ngi dng v cc d liu ang c

Thc hin vic x l d liu theo mt quy trnhDo c hai vai tr tng i tch bit cho nn mt Model thng c tch thnh cc lp c cc vng x l khc bit: Vng x l Logic nghip v: thng l x l rule hay policy ca nghip v cng nh quy trnh nghip v. Vng x l d liu: Cung cp/lu tr d liu v vic chuyn i d liu thnh cc dng khc nhau theo yu cu

Trong cc tnh hung n gin, Model ch lm vi thao tc n gin nh ly d liu t database. Trong cc tnh hung phc tp, vic x l c th l t hp ca hng trm lp din ra trn mt hoc vi my ch (server) hoc thm ch d liu hay quyt nh c a ra t Model li l tng hp kt qu t mt vi trung tm d liu nm ri rc trn vi lc a. Do vy trong Model khng ch c cc thao tc trn database v c cn l file system, memory, networking I/O ...Model hot ng nh l mt tng dch v nhm c th ti s dng gia cc Controller.

Khi Controller gi Model thng qua cc giao din lp trnh (API) ca Model, n cn bit mt s ng x chung ca Model. V d: Cch Model gi tn hiu v qu trnh n x l yu cu. C hay khng c li ngoi l, kiu ca li ngoi l, li trong trng hp no. Kiu tr veef cn mang tnh nht qunc. V - View

View l cc lp nh ngha cch thc trnh by d liu (khng cp nht d liu). Trong cc web framework, View gm hai phn chnh:

Template file: nh ngha cu trc v cch thc trnh by d liu cho ngi dng. V d nh b c, mu sc, khung nhn ...

Phn Logic: x l cch p dng d liu vo cu trc trnh by. Logic ny c th bao gm vic kim tra nh dng d liu, chuyn i nh dng d liu sang mt sng d liu trung gian c th hin th vi cu trc template ang c..., kim tra trng thi v c tnh ca d liu la chn mt cu trc hin th ph hp. Bn thn View cng l mt t hp ca nhiu lp. V n cng c th c View con gim ti trn mt s lp chnh v s dng li m. V do vy tnh logic ca View c th l logic ca mt cy phn cp.Trong m hnh truyn thng, View c trch nhim chuyn i d liu hay trng thi ca Model thnh cu trc trc quan. Do vy d liu ca Model cn c nh ngha mt cch hp l. S tch bit ca hai thnh phn ny s gip cho ngi lp trnh phn nh c mt bin gii r rng gia cch thc lu tr/ly d liu v cch trnh by d liu. Do vy tnh phc tp ca quy trnh ly d liu, x l d liu cng nh (s thay i ca chng theo thi gian) trc khi tr v s khng lm nh hng n vic trnh by d liu. R rng s khc bit v cng ngh ly d liu v cng ngh sinh trang khng gy nh hng n ng dng. iu ny kh quan trng trong vic tch hp cc ng dng. Ngoi ra, cch lm ny thc s m bo vic tch bit vai tr ca ngi thit k giao din vi vai tr ca lp trnh vin thin v d liu. Nh vy khi lm vic theo nhm, ngi qun tr d n c th t chc nhm pht trin thnh cc nhm k nng v pht trin ng dng song song vi nhau.Cc cng ngh thng c s dng View l HTML, CSS v JavaScript.

Hnh 1.0.2 Biu tun t mt chui MVC n ginTm li, MVC chia trch nhim cng vic thnh ba phn ring r:

Pht trin (development): Cc nh pht trin lm vic vi model. c trng ca phn ny l tn dng mt cch trit kin thc, k nng ca cc lp trnh vin lin quan ti thut ton x l d liu, qun tr c s d liu... Thit k (design): Cc nh thit k lm vic trc tip vi lp View, chu trch nhim to ra "cm quan" cho ng dng. H cn c kinh nghim lm vic vi HTML, CSS, JavaScript v Graphic Design. Hp nht (intergration): phn ny tn ti trong lp Controller. Mc ch chnh l gn kt developer v designer vi nhau. Ngi hp nht khng cn c nhiu kinh nghim lm vic vi d liu nh lp trnh vin nhng cn nm r cch t chc ca mt ng dng.M hnh MVC c p dng rt nhiu trong cc Web framework hin nay. Cc PHP framework ph bin nht:

Zend framework: l sn phm ca Zend cng ty bo tr cho PHP. Vi cc tnh nng mnh m, Zend framework thng c s dng cho cc cng ty ln, v bn cn phi c lng kin thc kh su rng v PHP c th s dng c Zend framework. CakePHP: l mt la chn tt cho nhng lp trnh vin c kin thc nng cao v PHP. N da trn cng mt nguyn tc thit k vi Ruby on Rails (mt framework dnh cho cc nh pht trin cc ng dng web bn ngn ng Rail). Vi cc h thng h tr, tnh n gin v mi trng m cao gip cho CakePHP tr thnh mt trong nhng framework ph bin nht hin nay. CodeIgniter: mt MVC framework vit bng PHP4 (gn y tng thch hon ton vi PHP 5.3.0 trong phin bn 1.7.2). c bit n nh mt framework d hiu v d s dng. CodeIgniter c Rasmus Lerdorf cha ca ngn ng PHP nh gi rt cao v tnh tinh gin v cu trc, t hiu nng cao khi vn hnh. Khng ging nh Symfony, PHP framework ny phc v mc ch l tng cho vic xy dng cc ng dng chia s, lu tr. N cung cp cc gii php n gin, v c mt th vin video hng dn phong ph, din n h tr, v cung cp sn mt hng dn s dng cho ngi mi bt u. PHP framework ny rt ph hp cho mt ngi mi lm quen vi framework. Joomla! v1.5.x: mt h qun tr ni dung ngun m c pht trin theo m hnh MVC trong cc phn m rng (extensions), bao gm cc thnh phn (components) v cc m un (modules).

Cm thy cha tha mn vi m hnh hin ti ca cc framework, chng ti nghin cu v pht trin c mt framewok hon ton mi, gii quyt c mi yu cu trong cc bi ton pht trin web.

CHNG 2. GII THIU FRAMEWORK XY DNG2.1. Tng quan v framework xy dngSau mt qu trnh tm ti v pht trin, chng ti xy dng c mt PHP framework hon ton mi, c nhiu u im so vi cc framework hin nay. Chng ti t tn framework ny l Hiphop framework.

Hiphop framework l mt PHP5 framework c vit ra nhm mc ch tn dng mi u im ca m hnh MVC trong vic xy dng cc ng dng web ng bng ngn ng PHP. Hiphop gip cc lp trnh vin to nn cc ng dng web c kin trc sng sa, d bo tr v d m rng. Bn cnh , Hiphop cho php cc nh pht trin xy dng mt ng dng web nhanh hn rt nhiu so vi vic vit m thun ty bng cch cung cp mt b th vin y cho cc tc v thng thng, cng nh cung cp mt m hnh tng tc n gin v d hiu cho vic kt ni ti nhng b th vin .Hiphop mang theo mt trit l ring v t chc ng dng web t m hnh MVC cho n kin trc phn cp Controller. V th, Hiphop mang theo nhiu im khc bit so vi cc PHP framework ng i.

Hnh 2.0.1 M hnh MVC c p dng trong Hiphop frameworkCc c im ni bt ca Hiphop framework bao gm: Tnh d s dng (vi c cc lp trnh vin cha c nhiu kinh nghim) Kin trc MVC hin i: m hnh d liu (Model), iu khin ng dng (Controller), chc nng hin th (View) Kh nng t chc ng dng thnh cc lp Controller a tng, gip ng dng c tnh module ha Tc x l rt nhanh so vi cc PHP Framework ng i nh kin trc kh thng minh v m c tinh gin, ti u cao H thng lp truy xut Database mnh m, h tr to nhiu kt ni Database n cc my ch database khc nhau trn cng mt request. Th vin h tr caching Mm do trong vic nh tuyn URL (URL Routing)Ngoi ra, Hiphop framework tch hp thm vo mt s lp th vin m cc framework khc cha mc nh tch hp:

Gi Email, h tr nh km, HTML/Text email, a giao thc (sendmail, SMTP, and Mail) Email Class Th vin chnh sa nh (ct nh, thay i kch thc, xoay nh, v.v..) Image Class ng ti mt file ln server Upload Class Tng tc vi my ch thng qua giao thc FTP - FTP Class Phn trang t ng Pagination Class Nn file - Zip Encoding Class To nh Captcha - mt loi kim th dng hi p c dng trong my tnh xc nh xem ngi dng c phi l con ngi hay khng - Captcha Class Mt lng ln cc hm h tr (helpers)Bn cnh l th vin hm h tr (helper) phong ph i km.Yu cu h thng khi s dng Hiphop framework: h thng vn hnh c, yu cu ti thiu sau cn c p ng: Web server: Apache, Nginx, Lighttpd PHP 5.2.6 tr ln Database (ty chn): MySQL (4.1+), MySQLiKhuyn co: Web server: Apache 2.2.11 kt hp vi PHP nh l mt module PHP 5.2.6 tr ln c bt APC2.2. Kin trc ca Hiphop framework2.2.1 Tng qut v h thng th mc trong Hiphop framework

Hnh 2.0.2 Cu trc cy th mc Hiphop frameworkApplicationNi lu tr ng dng ca bn. Chia lm ba th mc con: Controller: cha cc Controller ca ng dng Model: cha cc Model ca ng dng View: cha cc View ca ng dng

ConfigCha cc file cu hnh h thng, gm cc th mc: Autoload: lit k cc helper, library, model t ng load khi ng dng khi ng Database: cu hnh kt ni vi cc database

HelperNi lu tr cc hm h tr lp trnh ti u

LibrariesCha cc th vin h tr x l cc vn nghip v

HiphopCha cc lp v hm ct li ca Hiphop

DatabaseCha cc lp x l truy xut ti cc h qun tr c s d liu khc nhau

2.2.2 Cc thnh phn ct liTrc ht ta cn tm hiu quy trnh x l mt HTTP request ca ng dng vit bi PHP framework. Biu sau minh ha iu .

Hnh 2.0.3 Quy trnh x l mt HTTP request - Hiphop frameworkBc 1. File index.php c dng nh mt front controller, c nhim v khi to cc ti nguyn c bn cn thit cho vic chy Hiphop framework.Bc 2. Lp Router kim tra HTTP requsest xc nhn nhng vic phi lm.

Bc 3. Nu file m (cache file) tn ti, n gi trc tip ni dung cache file ti trnh duyt. Nu khng, Controller ph hp vi yu cu s c gi tip theo sau .Bc 4. Cc Controller np vo cc model, cc th vin li (library), cc hm s dng v bt k ti nguyn khc cn cho vic x l mt yu cu c th.

Bc 5. Cui cng thnh phn View c to ra v c gi trc tip ti trnh duyt.

Hnh 2.0.4 M phng cu trc cc thnh phn ct li trong Hiphop frameworkCc thnh phn ct li to nn Hiphop framework:a. File index.php

L file u tin c gi khi mt yu cu ngi dng c gi ti h thng. Nhim v ca file ny l c gi tr bin route t chui truy vn (query string), khi to cc lp c s (Input, Output, Route, Registry). Sau gi hm call_user_func_array() trong PHP chy cc hm, lp tng ng vi gi tr bin route. Sau cng l hm $output->display() tr v cho trnh duyt chui HTML do cc View cung cp (c gi t Controller).b. Class Input (system/libraries/Input.php)L lp c khi to mc nh trong file index.php. Lp ny cung cp cc hm h tr vic ly cc input data: $_GET, $_POST, $_SERVER.c. Class Registry (system/hiphop/Registry.php)

L mt final class Registry c to ra nhm qun l ton b cc i tng c khi to t cc lp c bn (Input, Output, DB,). Registry class tn dng k thut lp trnh hng i tng m bo vic to i tng ch din ra mt ln trong ton b chu k sng ca mt yu cu (request).

Hnh 2.0.5 Lp Registryd. Router object (khi to t class Router trong system/libraries/Router.php)Router l mt i tng c khi to khi Hiphop vn hnh nhm chuyn tip cu trc request dng mng $_GET do URL resolver sinh ra n mt lp Controller. N c vai tr trung gian trong vic tip nhn thnh phn request c chun ha t URL resolver, phn tch c t quy c, tm kim lp Controller c th x l request v cc thao tc x l khc lin quan n vic ny.

Hnh 2.0.6 Lp Routere. Output object (khi to t class Output trong system/libraries/Output.php)

Cng l i tng c khi to trong index.php vi mc ch cp nht lung d liu HTML c to ra t cc View.

Hnh 2.0.7 Lp Outputf. Loader object (khi to t class Loader trong system/libraries/Loader.php)ng vai tr l mt bin ca lp Controller.

Hnh 2.0.8 Lp Loaderfunction view()Ghi nhn chui HTML do View tr li vo bin $output

function helper()Np cc th vin hm h tr (helpers) c yu cu

function library()Np v khi to cc lp th vin c yu cu

function model()To i tng t lp Model c yu cu

function database()Khi to kt ni ti database (Cu hnh kt ni ti cc database c thit t trong file system/config/database.php)

g. class Controller (system/libraries/Controller.php)L lp Controller c s, lm nn s khc bit v mt t chc code ca ng dng trn Hiphop framework so vi cc framework khc. Controller dng cc magic method (mt khi nim v cc phng thc c bit trong PHP) nh __set, __get qun l cc bin trong chnh controller do lp trnh vin to ra.

Hnh 2.0.9 Lp ControllerMi lp Controller trong ng dng ca bn u phi tha k t lp Controller c s.h. Database (system/libraries/Database.php)Database l phn PHP giao tip tt nht. Cc h qun tr c s d liu m mnh m v phong ph: OCI (Oracle ng gp), DB2 (IBM ng gp), libmysql (MySQL AB ng gp), pgsql do cng ng PostgreSQL ng gp v lun h tr cc bn database mi nht. Ngoi ra PHP c sn mt database server SQLite nhng i km vi mi bn PHP 5.0+ c th gip cc lp trnh vin tin trong vic x l cc nhm data nh nhng mnh m nh Microsoft Access.Hiphop framework cung cp mt th vin giao tip vi MySql - h qun tr c s d liu m ngun m ph bin nht th gii v c cc nh pht trin rt a chung khi la chn gii php lu tr thng tin. Th vin ny khng ch gip tit kim c thi gian khi lp trnh vin lm vic vi h thng database m cn gip lp trnh vin trnh c cc li bo mt (SQL Injection) khi vit cu lnh SQL.i. Cc th vin Library (cc class t trong th mc system/libraries)Hiphop cung cp mt tp hp cc th vin h tr lp trnh a dng, gip cc lp trnh vin xy dng ng dng web nhanh v hiu qu hn. Mi th vin thc cht l mt PHP class cha nhiu cc phng thc trong n, v cng c th c gi nh nhng lp Model.

$this->load->library('name_library', 'alias');

$this->alias->function();

Chng ta s tm hiu c th cc lp th vin trong Hiphop framework vo Chng IV.

k. Cc hm tr gip Helper (t trong th mc system/helpers)Khng ging vi Library, Helper khng phi l mt class hng i tng, ch l mt file cha mt hoc nhiu hm cng tp trung h tr mt nhim v c th trong qu trnh xy dng ng dng. V d: Cookie Helper l cha mt tp hp cc hm x l cc vn lin quan ti cookie (thit t/sa/xa cookie).

Load mt helper t controller:

$this->load->helper('name');

Sau khi c load, c th dng ngay cc hm c trong Helper bt c u. V d:

Trong chng IV, chng ta s tm hiu cc lp th vin v h thng cc hm helper phong ph c tch hp trong Hiphop framework.

CHNG 3. CC KHI NIM BAN U KHI XY DNG NG DNG WEB BNG HIPHOP FRAMEWORK3.1. Hiphop URLsHiphop framework nhn website nh mt tp cc trang web ri rc, gn kt vi nhau qua URL v h thng th vin mc code. URLs trong Hiphop framework c thit k nhm mc ch thn thin c cho ngi v cc b my tm kim.

Hnh 3.0.1 V d mt URL Hiphop framework:Gi tr ca bin route c truyn qua chui truy vn (query string) c coi nh d liu vo, Hiphop framework dng gi tr ny xc nh Controller no s c gi thc hin yu cu ca ngi dng. Gi tr ca route l mt chui cc segment, ni vi nhau bi du /

Segment u tin tng trng cho lp (class) Controller s c gi Segment th hai tng trng cho hm (function) trong lp Controller tng ng Segment th ba (ty chn) ch ra gi tr ca tham s (param) c truyn ti hm nyV d:

yousite.com/index.php?route= blog/detail/123

Khi nhn c URL ny t trnh duyt, Hiphop s khi to mt i tng t class Blog (trong Controller) v thc hin phng thc detail trong class ny vi tham s 123Hiphop framework nhn nhn mt trang web l tp hp cc thnh phn HTML ghp ni vi nhau, mi thnh phn HTML li c hp thnh t nhiu thnh phn HTML con. Mi thnh phn HTML c gi l View. Mt View ch c th c gi t mt Controller tng ng vi n.3.2. Cc lp ControllerCc controller ng vai tr mu cht trong nhng ng dng xy dng bng Hiphop framework. Controller c khai bo nh l mt PHP class bnh thng, m rng (extends) t lp Controller c s trong Hiphop. Tn ca Controller class lun phi trng vi tn file cha n v vit hoa ch ci u tin. V d: file header.php cha class Header.

Trong Hiphop framework, cc lp controller c phn chia lm hai loi: controller gc v controller con (cp 1, 2) ty theo cp ca cc thnh phn View m cc lp Controller gi ti. Controller gc: c t tn da theo cc URL, cc phng thc bn trong controller gc to ra ty thuc vo yu cu gi t mi URL. Mt lp Controller gc thng cha nhiu method v chnh l im vo chng trnh v l ni HTML page c sinh ra. Mt controller gc c th cha nhiu con l controller con cp 1. Controller con: l mt controller, ch c th c gi t controller mc trn ca mnh m khng th gi trc tip qua URL. Controller con c nhim v chnh l tr v cho controller cha thnh phn View do chnh controller ny m nhim thng qua cc dch v ly t Model. khai bo cc con ca mnh, controller cn khai bo mt mng gm danh sch tn cc controller con thng qua bin $this->children. Controller con ch cha duy nht mt hm c tn index().V d v cy phn cp controller mt trang web trong Hiphop:

Hnh 3.0.2 Minh ha S phn cp controller trang ch3.3. View - Template

View n gin l mt trang web hoc mt thnh phn nh trn trang (VD: header, footer, sidebar) c nh ngha bng cc file php cha m HTML v cc bin logic, t trong th mc application/views/. View khng bao gi c gi mt cch trc tip m phi c gi qua mt Controller c th. Mi controller s hu mt view ring bit bng cch khai bo bin $this->template trong n.Xt mt v d n gin hiu hn v cc khi nim controller, view trong Hiphop framework.Khi ngi dng g vo thanh a ch (address bar) ca trnh duyt ti v trang web c URL:yoursite.com/index.php?route=blog/

Hiphop s tm ti file controller c t tn blog.php v np file ny.Chng ta s tm hiu cch thc to ra mt lp Controller thc s trong mt ng dng. S dng mt text editor, to file c tn blog.php c ni dung nh sau v t vo th mc application/controllers/class Blog extends Controller {

function __construct() {

parent::__construct();

}

function index() {

$this->data = array('message' => 'Welcome to My Blog');

$this->template = "blogview";

$this->children = array("header");

$this->render(TRUE);

}

}

Trong v d trn, controller gc l Blog, controller con cp mt l Header c khai bo trong mng $this->children(). Bin $this->children(): Khai bo cc Controller con ca Controller hin ti Bin $this->template(): Khai bo ng dn file View, ch ra template (view) ca controller hin ti. Trong mi controller vic khai bo template l iu bt buc. Bin $this>data: l bin kiu array, c truyn ti blogview hin th sau khi gi hm $this>render(TRUE) trong phng thc index. Li gi hm $this>render(TRUE): L li gi bt buc phi c trong mi phng thc ca controller. Tham s i km l TRUE nu controller ny l controller gc, l FALSE nu controller l controller con. Dng ny thc thi cc code PHP c trn view v tr li mt string cha m HTML cho ton b trang nhng khng in chng ra, thay vo , gi tr ny c truyn vo bin $output khi to t class Output, mt lp c chc nng x l giao thc HTTP v tr li cho trnh duyt. $this->render(params) lun l dng c vit cui cng trong phng thc. y l cc rng buc m cc lp trnh vin phi tun th khi xy dng cc ng dng Hiphop framework hiu v h tr.

Nh ni trn, Segment th hai ca URL ch ra phng thc no trong Controller gc s c thc hin. Khi Segment th hai trng, mc nh Hiphop s thc hin ton b cc dng code nm bn trong phng thc index(). Cc method ny ch l ni iu phi cc lp khc sinh ra HTML ch khng tr v HTML mt cch trc tip cho trnh duyt thng qua giao thc HTTP. Tr li v d trn, hy to mt file c tn blogview.php c ni dung nh sau v t vo th mc application/views/. y chnh l thnh phn View ca Blog controller.

Tip theo, to Header controller (controller con) bng cch to file header.php c ni dung nh sau, t vo th mc application/controller/

class Header extends Controller {

function __construct() {

parent::__construct();

}

function index() {

$this->id = 'header';

$this->data['title'] = 'Demo Blog'; $this->template = "header_view";

$this->render(FALSE);

}

Bin $this->id l thnh phn bt buc phi khai bo trong mi Controller con, gi tr ca bin $this->id s c dng lm tn bin truyn vo thnh phn View ca Controller cha, bin ny cha ton b m HTML do view ca controller sinh ra. Nhn vo dng u tin ca blogview.php ta s thy bin $header c echo, y chnh l View ca Header controller. Hnh 3.0.3 blogview.php

Hnh 3.0.4 header.php

header_view - view ca Header controller c t trong th mc application/view/:

By gi, m li URL ban u bng trnh duyt. Kt qu trn mn hnh l trang web c title Demo Blog cng dng ch: Welcome to My Blog3.4. Cc lp ModelCc lp Model l cc PHP class tha k t lp Model c s ca Hiphop framework, c thit k vi mc ch chnh l x l cc thng tin trong database. V d, qun l mt Blog, bn cn c mt lp model cha cc hm lm cc nhim v nh: thm, sa, xa hoc c cc d liu bi vit.

class Blog_model extends Model {

function __construct()

{

parent::__construct();

}

function getTenEntries()

{

$query = $this->db->query('SECLECT * FROM entry LIMIT 10, 0');

return $query->result_array();

}

function insertEntry()

{

$this->db->query(INSERT INTO entry VALUE {$_POST['title']}s);

}

}

Cc model c t trong th mc application/model/. C th t vo cc th mc con trong ca application/model/. Nguyn mu c bn ca mt lp Model:classModel_nameextendsModel{function__construct(){parent::__construct();}}

Tn file cha class ny c dng: model_name.php, trng vi tn class Model. Ch rng, tn ca class Model bt buc phi vit hoa ch ci u tin.Cc class Model c np v gi t cc phng thc trong lp Controller. lm c iu ny, trong phng thc ca Controller phi c hm:$this->load->model('Sub_folder/Model_name', 'name_object');

Tham s th hai nh ngha tn ca i tng c khi to t class Model_name. Nu khng c tham s th 2, tn ca i tng ny s c Hiphop framework t trng vi tn ca class Model. Chng ta c th truy cp ti cc phng thc ca lp Model mt cch d dng sau khi load Model:$this->load->model('Model_name', 'name');$this->name->functionInModel();

Di y l v d v mt lp controller, ly d liu t Model v truyn vo ViewclassBlog extendsController{functionindex(){$this->load->model('Blog_model');$this->data['entries'] = $this->Blog_model->getNewsEntries();$this->template = 'blog_view'; $this->render(TRUE);

}}

CHNG 4: H THNG CC LP TH VIN V HM H TR - LIBRARY & HELPERH thng lp th vin v hm h tr trong Hiphop gip cc lp trnh vin thao tc trong vic xy dng ng dng ca mnh nhanh v hiu qu hn. Chng ny gii thiu y cc lp th vin (library) v cc hm tr gip trong Hiphop cng nh cch thc s dng chng trong qu trnh xy dng ng dng.4.1 Cc lp th vin4.1.1. Email libraryL cng c mnh m gip n gin ha vic gi email. Lp th vin Email h tr cc tnh nng sau y:

H tr a giao thc: Mail, Sendmail v SMTP CC and BCCs Email dng ch (text) hoc HTML H tr gi file nh kmSau y l v d minh ha vic gi mail trong Hiphop d dng th no.

$this->load->library('email');//Cu hnh vic gi email$config['protocol'] = 'sendmail';

$config['mailpath'] = '/usr/sbin/sendmail';

$config['charset'] = 'iso-8859-1';

$config['wordwrap'] = TRUE;$this->email->initialize($config);

$this->email->setFrom('[email protected]', 'Your Name');

$this->email->setTo('[email protected]');

$this->email->setCC('[email protected]');

$this->email->setBCC('bcc@ example-mail-box.com');

$this->email->setSubject('Testing email class');

$this->email->setMessage('Testing the email class.');

$this->email->send();

Vi trng hp gi ti nhiu a ch mail, ch cn lm nh on code sau:$list = array('[email protected]', '[email protected]', '[email protected]');

$this->email->to($list);

Hm $this->email->attach() gip gi file nh km. t ng dn file nh km trong tham s u tin ca hm:

$this->email->attach('/path/to/photo1.jpg');$this->email->attach('/path/to/photo2.jpg');$this->email->attach('/path/to/photo3.jpg');$this->email->send();

4.1.2. Database libraryTrc khi lm vic vi th vin ny, cn thit t cc thng s kt ni nh username, password, tn database trong file system/config/database.php theo mu sau:$currentConnection = 'default';$db['default']['hostname'] = "localhost";$db['default']['username'] = "root";$db['default']['password'] = "";$db['default']['database'] = "database_name_1";$db['default']['dbdriver'] = "mysql";

L do mng $db phi dng hai chiu c lin quan ti tnh nng h tr nhiu kt ni ti nhiu c s d liu ca Hiphop framework. V d, trong ng dng ca bn cn ti mt kt ni ti database khc, ch cn thm thit t sau vo file database.php bn trn:$db['test']['hostname'] = "localhost";$db['test']['username'] = "root";$db['test']['password'] = "";$db['test']['database'] = "database_name_2";$db['test']['dbdriver'] = "mysql";

Test l mt tn ngu nhin ta t cho kt ni th hai. Tng t chng ta c th nh ngha cc kt ni khc mt cch d dng.Theo mc nh, sau khi cu lnh:

$this->load->database();

c thc hin, kt ni default s mc nh c np vo controller (c th l bin $this->db trong Controller).Sau khi np mt kt ni database, chng ta c th dng c cc phng thc trong lp Database tng tc vi database qua kt ni ny.

a. escape()T ng thm k t nhy n () cho tham s trong hm. Hm ny c bit hu ch trong vic vit cc cu truy vn an ton nhm trnh li SQL Injection.$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";

b. query()$query = $this->db->query('YOUR QUERY);

Hm query() tr v mt i tng kt qu database. Khi cu lnh Query c kiu c (SELECT), n tr v mt i tng v khi chng ta c th dng cc hm result_array(), num_rows() di y. Khi cu lnh query l kiu Ghi (UPDATE, DELETE, INSERT), n tr v TRUE hoc FALSE tng ng vi trng thi thnh cng hay tht b ca cu truy vn.c.result_arrayTr v kt qu truy vn di dng mng, mng rng khi khng c kt qu no c tm thy trong cu truy vn. Hm ny thng c s dng trong cc cu lnh lp:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array as $row){echo $row['title'];echo $row['name'];echo $row['body'];}

d.num_rowsHm ny tr li s dng ca kt qu cu truy vn

$query = $this->db->query('SELECT * FROM my_table');

echo $query->num_rows;

e.row($param)Hm ny tr v mt hng kt qu ca cu truy vn. Tham s trong hm ch ra th t ca hng c ly, nu hm khng cha tham s, mc nh hng u tin ca truy vn s c tr v.

$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0){$row = $query->row(); echo $row['title'];echo $row['name'];echo $row['body'];}

4.1.3. Phn trang vi Pagination class FirstLast

Gi s bn mun to cc lin kt chuyn hng trang ca bn sang mt trang khc nh trn, ch cn lm theo v d sau:$page = $this->get['page'];

$this->load->library('pagination');

$config['total] = '200';$config['limit'] = '20';$config['page'] = $page;

$config[style_links] = css_class_links;

$config['$style_results'] = 'css_class_results';

$config['url'] = site_url('home/listEntry&page=%s);

//Khi to cc gi tr thit t to link phn trang

$this->pagination->initialize($config);

echo $this->pagination->createNavigation();

4.1.4 Qun l session ca PHP vi session class

s dng c th vin ny, cn np vo controller bng on m sau:$this->load->library(session);

Dng cc hm set(), get() to session v ly cc gi tr ca session:$this->session->set(name_session_1, gia_tri_session_1);

$this->session->set(name_session_1, gia_tri_session_1);

4.1.5 To nh Captcha ngn chn cc chng trnh t ng s dng, cn np th vin ny vo Controller bng on m sau:

$this->load->library(captcha);

Cc hm c th s dng:a. getCode()

Khi th vin captcha c np, n s t ng sinh ra mt chui k t ngu nhin. Bn dng hm ny ly chui ngu nhin , phc v cho mc ch kim tra chui s nhp vo ca ngi dng c c trng vi chui ngu nhin dc sinh ra hay khng.$this->session->set('captcha') = $this->captcha->getCode();

b. showImage()

Hin th nh captcha cho ngi dng:$this->captcha->showImage();

4.1.6 Ti file ln server vi Upload class

Vic upload file trn server thc s d dng vi th vin upload ca Hiphop framework.

$config['upload_path'] = './uploads/';

$config['allowed_types'] = 'gif|jpg|png';

$config['max_size']= '1000';

$config['max_width'] = '800';

$config['max_height'] = '600';

$this->load->library('upload', $config);

$this->upload->do_upload();

ly cc thng tin tr v ca file upload, ch cn gi hm:$this->upload->data();

Nhng thng tin ny dng mng (array), bao gm cc thng tin nh v d sau:

Array([file_name]=> your_pic.jpg[file_type]=> image/jpeg[file_path]=> /path/to/your/upload/[orig_name]=> mypic.jpg[file_extension]=> .jpg[file_size]=> 22.2[image_width]=> 800[image_height] => 600[image_type]=> jpeg)

4.1.7 Ti file vi giao thc FTP - FTP classNh cch s dng cc th vin thng thng, s dng c FTP class, bn cn thm hm sau trong Controller:$this->load->library(ftp);

Sau khi c np, bin $this->ftp s cha ton b i tng FTP c khi to t FTP class. Cc hm sn c:a. $this->ftp->connect()

Kt ni v ng nhp vo server vi cc thng tin ng nhp. Hm ny phi c dng u tin khi mun lm vic vi server qua giao thc FTP $config['hostname'] = 'ftp.example.com';$config['username'] = 'your-username';$config['password'] = 'your-password';$config['port'] = 21;$config['passive']= FALSE;$config['debug']= TRUE;$this->ftp->connect($config);

b. $this->ftp->chmod()

Thit t quyn hn cho file hoc th mc trn server. V d:$this->ftp->chmod(/public_html/, 777);

c. $this->ftp->list_files()Lit k danh sch cc file hin c trong th mc trn server. V d:$list = $this->ftp->list_files('/public_html/');

d. $this->ftp->close()

ng kt ni ti my ch, s dng khi hon thnh cc cng vic cn lm vi kt ni FTP va to.4.2 Cc Helper

4.2.1. Array HelperNm trong file system/helpers/array_helper.phpBao gm cc hm c chc nng h tr lm vic, x l mng. s dng c cc hm trong file ny, cn dng khai bo sau trong Controller:

$this->load->helper(array);

Cc hm c th s dng:a. element()

Cho php np thm phn t vo mng, hm ny kim tra xem c ch s mng ny ko v gi tr tng ng ca n. Nu mt gi tr tn ti th tr li gi tr , nu gi tr ko tn ti th tr li gi tr false, bt k bn c xc nh cc gi tr mc nh qua ba bin.V d:$array = array('color' => 'red', 'shape' => 'round', 'size' => '');

echo element('color', $array); // returns "red"

echo element('size', $array, NULL); // returns NULL

b.random_element()

Tr v gi tr ngu nhin ca mt mng.$ran = array(1, 2, 4);

echo random_element($ran);

4.2.2. Text Helper

Bao gm cc hm h tr lm vic vi text

S dng lnh sau trong Controller load Text Helper: $this->load->helper(text);

Cc hm c th s dng:a. word_cutter()

Ct xn mt xu ra cc t vi di mong munV d:$string = "UET is the only Vietnamese university having one among the best 100 students";

$string = word_cutter($string, 4);

// Returns: UET is the only

Tham s th ba l hu t thm vo string, mc nh l du(3 chm) b. character_cutter()

Ct xu thnh cc k t c di xc nh. Hm ny lun m bo s ton vn ca cc t nn c th s k t ca xu kt qu c th sai s khng ng k.V d:$string = "UET is the only Vietnamese university having one among the best 100 students";

$string = character_cutter($string, 20); // Returns: UET is the only Vietnamese

Tham s th ba l hu t thm vo xu, nu khng khai bo th helper mc nh l du c. highlight_code()

T mu xu k t.$tring = highlight_code($string);

Hm ny s dng hm highlight_string() ca PHP, v th mu c s dng c xc nh trong file php.ini

d. highlight_phrase()S highlight mt cm t trong mt xu text, tham s u tin xc nh string, tham s th hai l cm mun highlight, tham s th ba v tham s th t l th html m v ng mu bn mun.e .create_slug()Khi dng hm ny vi tham s l mt chui string, mt chui mi c sinh ra, ni vi nhau bi du -.

$title = "Cng ha x hi ch ngha Vit Nam?";

$url_title = url_title($title);

// Kt qu: cong-hoa-xa-hoi-chu-nghia-viet-nam

Hm ny rt hu ch trong vic to cc URL thn thin vi b my tm kim. Chng hn:

http://yoursite.com/index.php?route=blog/entry/123/gioi-thieu

4.2.3. URL helper

Bao gm cc hm h tr lm vic vi url

a. site_url()

V d$this->load->helper('url');

echo site_url("blog/entry/123");

$segments = array(blog, entry, '123');

echo site_url($segments);

C hai cch lm trn u a ra kt qu l url: yoursite.com/index.php?route=blog/entry/123

b. uri_string()Khi dng hm ny bt k trang no trong ng dng, kt qu chng ta nhn c s l mt chui segment ca trang hin ti. Vi url:http://yoursite.com/index.php?route=blog/entry/123

Hm s tr v chui: blog/entry/123c.get_segment($order)Tr v segment ng vi th t trong tham s $order ca URL hin ti.http://yoursite.com/index.php?route=blog/entry/123

Hm get_segment(2) tr v chui: entryCHNG 5: P DNG HIPHOP FRAMEWORK XY DNG TRANG BLOG C NHNYu cu: Xy dng mt trang blog c nhn c cc chc nng, thit k, giao din nh hnh v. Ni dung v tiu bi vit c ly trong database.

Hnh 5.0.1Giao din BlogBc 1. Xc nh URL.

Url c th c dng:

yourblog.com/index.php?route=home/index

Bc 2. Xc nh cc phn cp Controller.

Bng cch nhn nhn mt trang web thnh cc thnh phn ring r, ta c th xc nh cy phn cp Controller trong v d ny, t xy dng cc Controller class cho hp l.

Controller gc: Home (hm c hm index) Controller cp 1: Header, Right_Bar, Footer Controller cp 2: Menu (con ca Header), MostViewBox v ContactBox (con ca RightBar)Tng ng vi cc controller ny l view (template) tng ng ca chng.Bc 3: Xc nh cc Model

Controller Home cn lit k danh sch cc bi vit ly t database v hin th trn trang ch. Ta cn mt model m nhim vic truy xut d liu trong database. Model ny cn c cc phng thc sau p ng ph hp vi yu cu c gi ti t Controller. getLastestEntry(): ly danh sch 10 entry mi nht, tr v Controller Home getMostViewEntry(): ly danh sch cc bi c xem nhiu nht, tr v cho Controller con MostViewBox.Bc 4: Vit mNh ni trn, mi class lin quan ti ng dng do lp trnh vin trin khai phi c t trong th mc system/application. Cc lp Controller, Model, View cn t vo cc th mc tng ng.V d v vic vit m cho lp Home Controller:

class Home extends Controller {

function __construct() {

parent::__construct();

}

function index() {

$this->children = array("header",footer, right_bar);

$this->load->model('home_model', 'homeModel');

$this->data[entries] = $this->homeModel-> getLastestEntry();

$this->template = "home_view;

$this->render(TRUE);

}

}

View cho Controller:

Tng t ta c th pht trin tip cc controller con khc.

Kt qu cui cng: Site blog c nhn c to trong thi gian 30 pht (khng k thi gian thit k HTML) vi cc c im:

Tc ti trang nhanh M c t vo th mc con trong system/application, trong tng lai c th d dng thm cc tnh nng nng cao lm blog thm phong ph.KT LUN

Ni dung ca kha lun trnh by v khi nim Web framework, m t chi tit chc nng cc thnh phn trong m hnh MVC trong cc Web framework.Kt qu chnh ca kha lun l:

1- Hiu r khi nim Web application framework. Nm r c m hnh MVC v vai tr ca cc thnh phn trong cc Web framework hin nay

2- T m hnh MVC chng ti xy dng c mt framework vit bng PHP hon ton mi (c nhiu u im so vi cc PHP Framework khc) c t tn l Hiphop framework. Qua kha lun ny gii thiu cch thc s dng v vn hnh ca mt ng dng c vit bng Hiphop frameworkHng nghin cu tip theo s l nh gi li m ngun Hiphop framework, v tc thc thi v mc p dng cc cng ngh mi ca PHP5. Bn cnh , trin khai xy dng thm nhiu lp th vin v v hm h tr nhm cung cp cho cc lp trnh vin cng c xy dng ng dng web mnh m hn, phong ph hn.TI LIU THAM KHO[1] Thomas Mayer, Professional CodeIgniter, 2006[2] Phm Cng nh, M hnh MVC v vai tr ca cc thnh phn trong Web framework. 2009[3] David Upton, CodeIgniter For Rapid PHP Application Development, 2006

[4] Kevin McArthur, Pro PHP Patterns Frameworks Testing and More, Mar.2008[5] Jason Gilmore, Apress Beginning PHP and MySQL 5 From Novice to Professional. Appress, 2nd Edition Jan 2006[6] Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson. PHP Manual. www.php.net. 2010[7] Gutmans Frontmatter, PHP 5 Power Programming. 2010I HC QUC GIA H NI

TRNG I HC CNG NGH

Bi Xun Thng

XY DNG NN TNG H TR LP TRNH WEB

DA TRN

M HNH MVC

KHO LUN TT NGHIP I HC H CHNH QUY

Ngnh: Cng Ngh Thng Tin

H NI - 2010

I HC QUC GIA H NI

TRNG I HC CNG NGH

Bi Xun Thng

XY DNG NN TNG H TR LP TRNH WEB

DA TRN

M HNH MVC

KHO LUN TT NGHIP I HC H CHNH QUY

Ngnh: Cng Ngh Thng Tin

Cn b hng dn: TS.Trng Ninh Thun

H NI - 2010

Controller cp 2

Controller cp 1

Controller gc

Controller cp 3

Header

Home

Controller cp 3

Controller cp 2

Footer

RightBar

Menu

MostViewBox

ContactBox