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à