.4 Kin trúc MVC trong Zend

Một phần của tài liệu 0965XÂY DỰNG ỨNG DỤNG HỌC TẬP TRỰC TUYẾN ¡ SỬ DỤNG ZEND FRAMEWORK 2 (Trang 32 - 40)

M t s thành ph n tiêu bi u c a l p MVC:

 Zend\Mvc\Application (g i t t là “Application”): kh i t o tài nguyên, đnh tuy n request, nh n và g i controller phù h p trong các quá trình đnh tuy n. Sau khi hồn thành, sau đó xu t sang view, hồn thành các request, tr v và g i response.

 Zend\Mvc\Controller: m t t p h p các l p “controller”, m i controller g m nhi u action. Action làm nhi m v đi u khi n ho t đ ng request và

response trên m t trang web.

 Zend\Mvc\Router: ch a các l p liên quan đ n đnh tuy n m t request. Nói

cách khác, nó n i các request t i các controller t ng ng c a nó.

 Zend\Mvc\Service: cung c p m t t p h p các y u t và đnh ngh a ServiceManager.

 Zend\Mvc\View: hi n th thông tin lên trang web thông qua các th HTML. 2.4.3.4. Module trong Zend

Module là m t nhóm trong đó có ch a các thành ph n c a website ph c v cho

m t ch c n ng hoàn ch nh nàođó. Trong ZF2 t t c đ u đ c t i u hóa thành module. Vi c xây d ng ng d ng theo module giúp rút ng n th i gian l p trình c ng nh phân

công công vi c cho t ng nhóm phát tri n, c ng nh kh n ng tái s d ng t nh ng d

án khác. Module trong Zend có th ch a: mưPHP, th vi n thi t k s n, view script và

Tr c tiên, ng i l p trình c n t i v b khung c a ZF2 [xem ph l c E], trong

đó m c đ nh có module m u Application. Nh ng module khác do ng i l p trình thêm

vào nh ng v n ph i đ m b o nguyên t c đ c tên và c u trúc gi ng nh module m u.

H th ng module đ c t o thành nh sau:

 Module Autoloader: ây là thành ph n đ c bi t giúp cho vi c x lý các

namespace, mapping, và l u gi các instance khi c n x lý.

 Module Manager: Qu n lý module và các c u hình c a module, đi u khi n vi c n p module khi th c thi ng d ng.

 ModuleManager Listeners: Các Event listener có th đ c g n v i nhi u s ki n khác nhau c a module manager. Chúng có th làm m i vi c t vi c gi i quy t và n p các module t i vi c kh i t o nh ng tác v ph c t p. 2.4.3.5. nh tuy n trong Zend

nh tuy n (routing) trong Zend hi u c b n là vi c ch đnh vi c g i m t action trong controller t ng ng cho m t view và hi n th đ ng d n này lên thanh đa ch URL c a trình duy t web. ZF2 có kh n ngánh x đa ch URL r t m nh m khi cung

c p ph ng pháp r t linh ho t trong vi c ánh x URLs sang cho controller. Ngồi ra,

ZF2 cịn có kh n ng phân tích URL, chuy n các thơng s trong URL thành các tham

s trong ph n g i hàm c a controller.

Có nhi u ph ng pháp đ nh tuy n trong ZF2, m t trong s đó là segment. u

tiên c n ph i ch đ nh hình d ng đ ng d n trong tham s “route”, k đ n là đ nh d ng

ký t đ c phép cho m i segment c a route trong tham s “constraints”, và cu i cùng

là ch ra action m c đ nh c a m i controller trong tham s “defaults”.

array( 'type' => 'segment', 'options' => array( 'route' => '/application[/:controller][/:action][/:id]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]+', ), 'defaults' => array( '__NAMESPACE__' => 'Application\Controller', 'controller' => 'Index',

'action' => 'index', ), ) ) B ng 2.2- nh tuy n trong ZF2 2.4.3.6. K t n i và truy v n c s d li u Zend\Db là m t l p đ m nh n vi c k t n i t i các h qu n tr c s d li u c a ZF2. Có 2 ph ng pháp th ng dùng là ZendDbSql và ZendDb TableGateway.

ZendDbAdapter

i t ng Adapter là m t thành ph n (sub-component) quan tr ng nh t c a Zend\Db. Nó ch u trách nhi m t o c ng k t n i các mư l nh đ c vi t trong Zend\Db

t i các ph n m r ng PHP và c s d li u t nhà cung c p. th c hi n k t n i này,

đ i t ng Adapter t o ra m t l p tr u t ng cho các thành ph n m r ng PHP, g i là

"Driver" c a Zend\Db adapter. Nó c ng t o ra m t l p tr u t ng, g i là "Platform"

c a adapter, cho các ngu n khác nhau mà m i nhà cung c p platform c th có th có

đ k t n i t i h qu n tr c s d li u.

k t n i t i c s d li u, c n t o m t adapter b ng cách s d ng l p Zend\Db\Adapter\Adapter. Thông th ng, m t m ng c u hình ho c m t t p tin xml

ch a các thơng tin c u hình c s d li u s đ c dùng đ k t n i v i adapter.

$adapter = new \Zend\Db\Adapter\Adapter(array( 'driver' => '<tên driver>',

'database' => '<tên c s d li u>',

'username' => '<tên đ ng nh p>',

'password' => '<m t kh u>' ));

B ng 2.3- K t n i c s d li u s d ng Zend\Db\Adapter trong ZF2

Danh sách các driver đ c h tr :

 Mysqli: dành cho MySQL.

 Pgsql: dành cho PostgreSQL.

 Sqlsrv: dành cho SQL Server.

 Pdo_Mysql: dành cho MySQL thông qua m r ng PDO.

 Pdo_Sqlite: dành cho SQLite thông qua m r ng PDO.

ZendDbSql

Zend\Db\Sql là m t l p tr u t ng dùng đ xây d ng các truy v n SQL c b n, c th thông quaAPI h ng đ i t ng. K t qu cu i cùng c a đ i t ng Zend\Db\Sql s v a t o ra m t câu l nh (statement) và câu l nh ch a bi n (parameter container) đ i di n cho truy v n đích, ho c là m t chu i đ y đ có th th c thi tr c ti p trên n n t ng c a c s d li u.

Các đ i t ng Zend\Db\Sql c n cung c p m t đ i t ng adapter đ k t n i v i h

qu n tr c s d li u. Cú pháp k t n i theo ki m lambda, ngh a là ng i l p trình có th th c hi n nhi u câu l nh truy v n n i ti p nhau.

$sql = new Sql($adapter);

$select = $sql->select(); // tr v đ i t ng Zend\Db\Sql\Select $insert = $sql->insert(); // tr v đ i t ng Zend\Db\Sql\Insert $update = $sql->update(); // tr v đ i t ng Zend\Db\Sql\Update $delete = $sql->delete(); // tr v đ i t ng Zend\Db\Sql\Delete

B ng 2.4- Truy v n c s d li u s d ng Zend\Db\Sql trong ZF2

ZendDb TableGateway

i t ng TableGateway đ c dùng đ cung c p m t đ i t ng đ i di n cho m t

b ng trong c s d li u, và các ph ng th c c a đ i t ng này ánh x đ n nh ng

thao tác t ng t nh trong b ng c a c s d li u. Có hai implementation (k th a t

interface) chính hi u qu nh t là: AbstractTableGateway và TableGateway.

 AbstractTableGateway là m t implementation c s tr u t ng cung c p

các ch c n ng nh select(), insert(), update(), delete() th c hi n các công

vi c t ng t nh các đ i t ng SQL, và các ph ng th c selectWith(),

insertWith(), updateWith() và deleteWith()…

 TableGateway đ n gi n ch c n thêm m t ph ng th c kh i t o h p lý

cho l p AbstractTableGateway. i t ng TableGateway c th đ c kh i t o hàm kh i t o. Tên b ng và th hi n c a m t adapter c n thi t đ thi t l p m t đ i t ng làm vi c TableGateway. Khi m t ph ng th c đ c th c thi (ch ng h n select()), m t đ i t ng ResultSet s đ c tr v

và s n sàng cho vi c s d ng.

2.4.3.7. ZendForm

D li u do ng i dùng nh p vào c n đ c ki m ch ng đ tránh nh ng h h ng nh h ng t i h th ng. M t trong nh ng ph ng pháp ki m ch ng d li u phía server

trong ZF2 là s d ng l p Zend/Form. ZendForm h tr các hàm d ng s n đ ki m tra ho c l c d li u đ u vào, giúpcho ng i l p trình thu n l i h n trong vi c ki m tra d

li u tr c khi l u vào c s d li u. M t cách tr u t ng, ZendForm chính là c u n i

gi a model và view.

Các b c t o m t bi u m u s d ng ZendForm:

 Khai báo bi u m u trong action controller.

 T o m t view script đ hi n th bi u m u này.

 Thêm nh ng ki m ch ng đ ràng bu c d li u trong ph n form b ng cách

s d ng các Validation mà th vi n Zend cung c p. Trong ph n này, có th xu t l i n u nh d li u nh p vào vi ph m quy t c ki m ch ng.

 Quay l i controller, ph i xét n u d li u nh p vào là h p l m i th c hi n

nh ng công vi c ti p theo thông qua hàm isValid().

2.4.3.8. u và nh c đi m

u đi m

Th nh t, Zend là m t n n t ng phát tri n ng d ng lý t ng cho các doanh nghi p l n. Hi n nó đang đ c s d ng t i nhi u ngân hàng c ng nh công ty trên th

gi i, nh BBC, Shaklee, CarinBridge, …

Th hai, các l p trong th vi n d dàng m r ng đ phù h p v i yêu c u m i c a

ng d ng mà không làm nh h ng đ n h th ng đang v n hành. n gi n là ng i

l p trình ch c n t i v phiên b n Zend Framework m i nh t và gi i nén vào th m c

vendor c a d án.

Th ba, tài li u v Zend r t nhi u và đa d ng, giúp cho ng i l p trình d ti p c n t c b n đ n nâng cao. Tuy nhiên, s l ng tài li u chính th ng b i nh ng ng i có uy tín trong ngành l p trình vi t ra l i không nhi u.

Th t , Zend h ng đ n mơ hình MVC, v n là m t trong nh ng l a ch n r ng

rưi nh t khi phát tri n ng d ng web. Các module c a MVC và kh n ng phân tách

gi a ph n d li u và ng d ng chính là nguyên nhân chính đ ng sau s ph bi n c a

nó. M t l i th khác làZend h tr h u h t các c s d li u hi n nay, giúp cho ng i

l p trình khơng c n ph i b n tâml a ch n.

Nh c đi m

V n đ đ u tiên, tuy Zend là m t th vi n mi n phí nh ng bên c nh đó, các ti n

c n thi t trong quá trình phát tri n ng d ng và đ có đ c nó, ng i l p trình c n ph i t n m t kho n chi phí khá l n.

V n đ th hai, do b th vi n khá đ s nên trong đó ch c ch n ch a r t nhi u l p đ m nh n nh ng công vi c khác nhau. i u này gây khó kh n và t n th i gian tìm hi u cho ng i l p trình ng d ng khi mu n tìm ki m chính xác m t l p mà h quan

tâm, m c dùtài li u h ng d n r t đa d ng.

V n đ th ba, có m t s thay đ i r t khác bi t hai phiên b n, khi n cho vi c c p nh t ng d ng tr nên r c r i. H u h t m i th đ u thay đ i, t cách thi t l p route, tên l p, cú pháp, … khi chuy n t phiên b n 1 lên 2. Th m chí nh ng ng i v n đư rành v Zend phiên b n c c ng c m th y khó kh n khi tìm hi u phiên b n hi n t i.

Và cu i cùng, cú pháp c a Zend t ng đ i khó vi t, đ c bi t là v i nh ng ng i m i ch p ch ng làm quen v i ngôn ng PHP. H s c m th y gi a Zend và PHP có m t s khác bi t r t l n. Nh ng ng i này cho bi t, cú pháp c a Zend, theo nh h ng d n chính th ng, có v r t “hàn lâm”.

2.4.3.9. Nh n xỨt

Zend Framework là th vi n l p trình d a trên ngơn ng PHP, đ c thi t k theo

h ng đ i t ng và h tr l p trình theo mơ hình MVC. Vi c l p trình đ c chia thành

t ng module, tách b ch gi a t ng ph n x lý cho website, nó giúp cho mư l nh c a ng d ng trông sáng s a h n,đ ng th i d qu n lý, chnh s a và nâng c p.

2.4.4. H qu n tr c s d li u MySQL

2.4.4.1. Gi i thi u

MySQL là h qu n tr c s d li u mư ngu n m ph bi n nh t th gi i và đ c các nhà phát tri n r t a chu ng trong quá trình phát tri n ng d ng.

Hi n t i, MySQL có nhi u phiên b n cho các h đi u hành khác nhau: phiên b n

Win32 cho các h đi u hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD,

NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, … 2.4.4.2. c đi m

MySQL là t p h p các đ i t ng: b ng, b ng o, … cho phép ng i dùng l u tr

và truy xu t các thông tin đư đ c t ch c và l u tr bên trong. [1]

MySQL s d ng Ngơn ng truy v n có c u trúc (SQL) đ l y d li u t c s d li u. Ng i dùng có th s d ng giao di n đ h a (ch ng h n công c phpMyAdmin)

M i b ng trong c s d li u khi t o ra s đ c l u tr b ng ba t p tin v t lý:  .frm: l u đnh d ng (c u trúc) c a b ng.  .MYD: l u n i dung c a b ng.  .MYI: l u ch m c c a b ng. 2.4.4.3. u và nh c đi m u đi m

u tiên MySQL, là hồn tồn mi n phí cho nên ng i l p trình có th t i v t

trang ch . C ng nh PHP, tính mi n phí giúp cho ng i l p trình xây d ng các website

có c s d li u đ c qu n lý b ng MySQL.

Th hai, MySQL là c s d li u t c đ cao, n đ nh và d s d ng, ho t đ ng trên nhi u h đi u hành, cung c p m t h th ng l n các hàm ti n ích.

Th ba, MySQL h tr giao d ch m nh do s d ng m t trong s nh ng engine giao d ch c s d li u m nh nh t trên th tr ng. Tính tồn v n c a d li u c ng ph i đ c b o đ m trong su t q trình server có hi u l c, các m c giao d ch đ c l p đ c chun mơn hóa, và phát hi n khóa ch t ngay l p t c.

Cu i cùng là t c đ và tính b o m t cao. MySQL là nhà máy chu n cho các website ph i trao đ i th ng xuyên vì nó có engine x lý t c đ cao, kh n ng chèn d

li u nhanh và h tr m nh cho các ch c n ng chuyên d ng c a web nh tìm ki m v n

b n. Do đó, MySQL r t thích h p cho các ng d ng có truy c p c s d li u trên

Internet.

Nh c đi m

K t khi Oracle mua l i MySQL t hưng Sun Microsystems vào n m 2010, nó

khơng cịn hồn tồn là m t ph n m m mư ngu n m n a. D i s qu n lý c a Oracle,

MySQL hi n có phiên b n tr phí, module mư ngu n đóng. H n n a, cơng ty này đư

không ch p nh n các b n vá l i ho c cung c p m t h ng phát tri n dành cho công

đ ng. M t khác, m t s tên tu i l n nh Red Hat Enterprise Linux, Fedora, Slackware

Linux, openSUSE và Wikimedia Foundation đ u đư chuy n sang dùng MariaDB. Tuy

CH NG 3: HI N TH C NG D NG

3.1. Gi i thi u ng d ng

H c t p đ i v i m i ng i là m t vi c làm quan tr ng và không bao gi ng i

ngh. Ngày nay, s phát tri n c a Internet và công ngh di đ ng đư t o thêm đi u ki n

h tr nhu c u chính y u này. M t ph ng pháp h c t p m i xu t hi n và ngày càng đ c nhi u ng i s d ng, nh t là trong gi i tr , đólà h c qua m ng. Nh có Internet

và thi t b di đ ng, ng i h c có th linh đ ng ti p thu ki n th c m i lúc, m i n i và

đ c bi t là cùng nhau trao đ i v i nh ng ng i h c khác.

T th c t này, EdusOne ra đ i v i mong mu n k t n i m i ng i trong th gi i c a tri th c. ây là m t ng d ng web cho phép ng i dùng tham gia nh ng l p h c

trên m ng. ng d ng đ c vi t b ng ngôn ng PHP, s d ng Zend Framework 2.0 và

Một phần của tài liệu 0965XÂY DỰNG ỨNG DỤNG HỌC TẬP TRỰC TUYẾN ¡ SỬ DỤNG ZEND FRAMEWORK 2 (Trang 32 - 40)

Tải bản đầy đủ (PDF)

(100 trang)