Tải bản đầy đủ (.pdf) (62 trang)

Bài giảng mô hình MVC va Zend framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.41 MB, 62 trang )

TRUNG TÂ M TIN HỌC
ĐẠI HỌC KHOA HỌC TỰ NHIÊN-TP.HCM
LẬP TRÌNH PHP NÂNG CAO
LẬP

TRÌNH

PHP

NÂNG

CAO
MÔ HÌNH MVC
+ ZF2


HÌNH

MVC

+

ZF2
1
TRUNG TÂ M TIN HỌC
ĐẠI HỌC KHOA HỌC TỰ NHIÊN-TP.HCM
Bài
1: Mô hình MVC
Bài

1:





hình

MVC
1. Lịch sử MVC
2.
Giới
thiệu

hình
MVC
2.
Giới
thiệu

hình
MVC
3. Ưu điểmvànhược điểmcủamôhình
MVC
MVC
4. L
ý
do nên làm vi

ctheomôhìnhMVC
ý

2

Bài 1: Mô hình MVC
11
Lị hLị h
ửử
MVCMVC
1
.
1
.
Lị
c
hLị
c
h
s

s

MVCMVC

Được
đưa
ra
bởi
các
nhà
nghiên
cứu
tại
phòng

thí

Được
đưa
ra
bởi
các
nhà
nghiên
cứu
tại
phòng
thí
nghiệm Xerox PARC Palo Alto, dựa trên Ngôn ngữ lập
trình Smalltalk - lậ
p
trình theo hướn
g
đốitượn
g

g
iao
p
g
g
g
điện đồ họa GUI, công bố cuốinhững năm 70 đầu
những năm 80.
ế

ế


 Th
ế
hệ ti
ế
p theo củaMVC xu

thiện cùng vớihệđi

u
hành NeXT và các phầnmềmcủa nó.
Kiế tú à à à đ hát t iể àh à thiệ

Kiế
n
t
r
ú
c n
à
y ng
à
y c
à
ng
đ
ược p
hát


t
r
iể
n v
à

h
o
à
n
thiệ
n
nhằm giải quyết các vấn đề phát sinh cũng như các giải
pháp cho quá trình phát triểnphầnmềm

vậy
sau
đó
pháp

cho

quá

trình

phát

triển


phần

mềm
.

vậy
sau
đó
,
lầnlượt các MVC framework ra đờidựatrênmôhình
MVC như: CodeI
g
nite
r
,
Zend…
3
g
,
Bài 1: Mô hình MVC
22
GiớiGiới
thiệthiệ
ôô
hì hhì h
MVCMVC
2
.
2

.
GiớiGiới
thiệ
u
thiệ
um
ô
m
ô

n
hhì
n
h
MVCMVC

MVC
(Model
View
Controller):

một

MVC

(Model


View
-

Controller):


một
design pattern, theo hướng đốitượng, cho



phép developer có th

chia nh

code c

a
mình ra thành 3
p
hần:
p
– Model: duy trì dữ liệu và các business rule

View:
hiển
thị
dữ
liệu

các
thành
phần

trong

View:

hiển
thị
dữ
liệu

các
thành
phần
trong
giao diệnngười dùng
Controller
:
điều
khiển
các
sự
kiện
của
người

Controller
:

điều
khiển
các

sự
kiện
của
người
dùng có ảnh hưởng đến Model và View
4
Bài 1: Mô hình MVC
22
GiớiGiới
thiệthiệ
ôô
hì hhì h
MVCMVC
2
.
2
.
GiớiGiới
thiệ
u
thiệ
um
ô
m
ô

n
hhì
n
h

MVCMVC
Người dùng tương tác

(b

ng cách click vào
link hoặc submit
form…)
controller sẽđiều
khiểnhoạt động này
và đưarahànhđộng
thích hợp (thao tác
tới model và cập
hật
i)
5
n
hật
v
i
ew
)
Bài 1: Mô hình MVC
22
GiớiGiới
thiệthiệ
ôô
hì hhì h
MVCMVC
2

.
2
.
GiớiGiới
thiệ
u
thiệ
um
ô
m
ô

n
hhì
n
h
MVCMVC

Trong
đó
:

Trong
đó
:

– Controller: có thể gửiyêucầu đến View liên kếtcủa

để
thay

đổi
hiển
thị
trên
View,
cũng

thể
gửi
yêu

để
thay
đổi
hiển
thị
trên
View,

cũng

thể
gửi
yêu
cầu đến model để cậpnhậttrạng thái của model.

Model: thôn
g
báo đến các View và Controller có liên
g

quan khi có thay đổitrạng thái. Thông báo này cho
phép các View tạo ra các hiểnthịđượccậpnhậtvà
h

á
Ctll
th
đổi
á
d
c
h
op

pc
á
c
C
on
t
ro
ll
er
th
ay
đổi
c
á
c comman
d

– View: yêu cầu Model gửi các thông tin mà nó cần để
tạo
ra
các
hiển
thị
trên
View
tạo
ra
các
hiển
thị
trên
View
.
6
Bài 1: Mô hình MVC
33
ƯƯ
điểđiể
àà
hh
điểđiể
ủủ
ôô
hì hhì h
MVCMVC
3
.

3
.
Ư
u
Ư
u
điể
m
điể
mv
à
v
à
n
h
ượcn
h
ược
điể
m
điể
mc

ac

am
ô
m
ô


n
hhì
n
h
MVCMVC

Ưu
điểm
Ưu
điểm
– Phát triểnphầnmềm: chuyên nghiệp hóa, có thể chia
công việc cho nhiều nhóm chuyên môn khác nhau: nhóm
thiếtkế, nhóm lập trình, nhóm tổ chức database Giúp
phát triển ứng dụng nhanh, đơngiản, dễ nâng cấp.
Bảo
trì
Với
các
lớp
đợc
phân
chia
các
thành
phần
của

Bảo
trì
:

Với
các
lớp
đ
ư
ợc
phân
chia
,
các
thành
phần
của
mộthệ thống dễđược thay đổi, nhưng sự thay đổicóthể
đư

ccôl
ập
tron
g
từn
g
lớ
p
, ho

cchỉảnh hưởn
g
đếnlớ
p


ập
g
g
p

g
p
ngay gầnkề của nó, chứ không làm ảnh hưởng cả
chương trình.
Mở

Việ
thê
hứ
ă
à
h
từ
lớ

dễ

Mở
r

ng:
Việ
c
thê

mc
hứ
cn
ă
ng v
à
oc
h
o
từ
ng
lớ
ps

dễ
dàng hơn là phân chia theo cách khác.
7
Bài 1: Mô hình MVC
33
ƯƯ
điểđiể
àà
hh
điểđiể
ủủ
ôô
hì hhì h
MVCMVC
3
.

3
.
Ư
u
Ư
u
điể
m
điể
mv
à
v
à
n
h
ượcn
h
ược
điể
m
điể
mc

ac

am
ô
m
ô


n
hhì
n
h
MVCMVC

Nhược
điểm

Nhược
điểm
– Thích hợpvớidự án vừavàlớncònđốivới

dự án nh

việcápdụng mô hình MVC sẽ gây
cồng kềnh, tốnthời gian trong quá trình phát

tri

n.
– Tốnthời gian trung chuyểndữ liệugiữacác
lớp
8
Bài 1: Mô hình MVC
44
LýLý
dd
êê
làlà

iệiệ
thth
ôô
hì hhì h
MVCMVC
4
.
4
.
LýLý
d
o
d
o n
ê
nn
ê
n

m

mv
iệ
cv
iệ
c
th
eo
th
eo m

ô
m
ô

n
hhì
n
h
MVCMVC



hình
MVC
đã
chia
ứng
dụng
thành



hình
MVC

đã
chia
ứng
dụng
thành

M, V và C nên developer có thể tạora


nhi

u view và nhi

u cotrolle
r
cho các
model mà khôn
g
p
hải đốimặtvớiviệc
g
p
thay đổi trong thiếtkế model.

=>
Giúp
cho
việc
duy
trì
di
chuyển

tổ

=>


Giúp
cho
việc
duy
trì
,
di
chuyển

tổ
chức ứng dụng dễ dàng hơn.
9
Bài 1: Mô hình MVC
44
LýLý
dd
êê
làlà
iệiệ
thth
ôô
hì hhì h
MVCMVC
4
.
4
.
LýLý
d

o
d
o n
ê
nn
ê
n

m

mv
iệ
cv
iệ
c
th
eo
th
eo m
ô
m
ô

n
hhì
n
h
MVCMVC

Đối

với
những
người
mới
thì
việc
xây

Đối
với
những
người
mới
thì
việc
xây
dựng ứng dụng dựatrênmôhìnhMVC
phứctạp và lãng phí vì công việc này như
là xâ
y
dựn
g
mộtdự án lớn, tu
y
nhiên “bí
y
g
y
mật” của MVC pattern không nằm ở chỗ
viết

code


chỗ
duy
trì

viết
code




chỗ
duy
trì

.
 Cho phép sửa đổi code mà không ảnh
h ở
hiề
đế
á
thà h
hầ
khá
h
ư

ng n

hiề
u
đế
nc
á
c
thà
n
h
p
hầ
n
khá
c.
10
Bài 1: Mô hình MVC
44
LýLý
dd
êê
làlà
iệiệ
thth
ôô
hì hhì h
MVCMVC
4
.
4
.

LýLý
d
o
d
o n
ê
nn
ê
n

m

mv
iệ
cv
iệ
c
th
eo
th
eo m
ô
m
ô

n
hhì
n
h
MVCMVC


Cho
phép
việc
làm
việc
nhóm
trở
nên
dễ

Cho

phép
việc
làm
việc
nhóm
trở
nên
dễ
dàng hơn vì nhóm nào sẽ làm việccủa
ế

nhóm đódựatrênth
ế
mạnh c

a mình.


Nhóm View Team sẽ ch

u trách nhi

mvề vi

c



thựchiện các View

Nhóm
Model Team
sẽ
lo
về
mặt
dữ
liệu
Nhóm
Model

Team

sẽ
lo

về
mặt

dữ
liệu
– Nhóm Controller Team sẽ có cái nhìn tổng thể
về
các
luồng
của
ứng
dụng
quản

các
yêu
về
các
luồng
của
ứng
dụng
,
quản

các
yêu
cầu, làm việcvới các model và lựachọnView
hiển
thị
cho
khách
hàng

hiển
thị
cho
khách
hàng
.
11
Bài 1: Mô hình MVC
12
TRUNG TÂ M TIN HỌC
ĐẠI HỌC KHOA HỌC TỰ NHIÊN-TP.HCM
LẬP TRÌNH PHP NÂNG CAO
LẬP

TRÌNH

PHP

NÂNG

CAO
MÔ HÌNH MVC
+ZEND


HÌNH

MVC

+


ZEND

FRAMEWORK
FRAMEWORK
1
TRUNG TÂ M TIN HỌC
ĐẠI HỌC KHOA HỌC TỰ NHIÊN-TP.HCM
Bài 2: Xây dựng ứng dụng
theo mô hình MVC
1.
X
ây dựng Model
2.
Xây
dựng
Controller
2.
Xây
dựng
Controller
3. Xây dựng View

4.
X
ây dựng ứng dụng đ

utiêntheomô
hình MVC
2

Bài 2: Xây dựng ứng dụng theo mô hình MVC
MôMô
hì hhì h
MVCMVC
MôMô

n
hhì
n
h
MVCMVC
3
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl
1
.
1
.

y

y
d
ựng
d
ựng
M

o
d
e
lM
o
d
e
l

Thường
thì
nên
xây
dựng
Model
trước
bởi

Model

Thường
thì
nên
xây
dựng
Model

trước
bởi


Model

phụcvụ như là nềntảng dữ liệu cho toàn bộứng dụng
web;
 Nhiềuchứcnăng của Controller phụ thuộc vào model.
 Tron
g
Model sẽ có các
p
hươn
g
thứcxử l
ý
liên
q
uan đến
g
p g
ý
q
dữ liệu: dữ liệutrựctiếphoặcdữ liệulấytừ CSDL
4
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl
1
.
1

.

y

y
d
ựng
d
ựng
M
o
d
e
lM
o
d
e
l


dụ
:


dụ
:

– Ví dụ: Hiểnthị sách có trong danh mục sách: dạng danh mục
sách và dạng hiểnthị từng sách theo lựachọncủangười dùng.
Danh mục sách

Hiểnthị chi tiết sách theo
lựachọncủangười dùng
5
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl
1
.
1
.

y

y
d
ựng
d
ựng
M
o
d
e
l

M
o
d
e

l


Phân
tích
yêu
cầu
:

Phân
tích
yêu
cầu
:

– Theo yêu cầu: các món ănsẽ có các thông
tin: title, author, description
Xây dựng class Book để tổ chức thông tin
này

Class
này
sẽ
được
gọi
sử
dụng
tại
model
của


Class

này
sẽ
được
gọi
sử
dụng
tại
model

của
ví dụ
6
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl
1
.
1
.

y

y
d
ựng

d
ựng
M
o
d
e
lM
o
d
e
l
class Book {
public $title;
public $author;
public $description;
public function construct($title $author
public

function
__
construct($title
,
$author
,
$description)
{
$this->title = $title;
$this->author = $author;
$h
d$d

$
t
h
is->
d
escription =
$d
escription;
}
}
7
}
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl
1
.
1
.

y

y
d
ựng
d
ựng
M

o
d
e
l

M
o
d
e
l


Phân
tích
yêu
cầu
:

Phân
tích
yêu
cầu
:

– Cầnhiểnthị các thông tin về sách: Xây dựng


Model là nơix

lý thông tin v


các sách
– Vớiyêucầucủangười dùng là hiểnthị danh
sách các sách, và sau khi chọnmộtsách
bằng cách click vào link thì sẽ hiểnthị thông
tin củasáchđượcchọn => cầnphải có hai
function: lấy danh mụcsáchvàlấymộtsách
theo tiêu đề đượcchọn
8
Bài 2: Xây dựng ứng dụng theo mô hình MVC
33
XâXâ
dd
ViVi
3
.
3
.

y

y
d
ựng
d
ựng
Vi
ew
Vi
ew

class
bookModel
{
class

bookModel
{
public function getBookList()
{ // here goes some hardcoded values to simulate the
database
database
return array(
"Jungle Book" => new Book("Jungle Book", "R.
Kipling", "A classic book."),
"Professional CodeIgniter" => new Book("Professional
CodeIgniter", "Thomas Mayer", "A book about how to
program with CodeIgniter Framework"),
"PHP for Dummies" => new Book("PHP for Dummies",
"Some Smart Guy", "A tutorial book about propramming
language")
);
);
9
);
}
Bài 2: Xây dựng ứng dụng theo mô hình MVC
11
XâXâ
dd
MdlMdl

1
.
1
.

y

y
d
ựng
d
ựng
M
o
d
e
lM
o
d
e
l
public function
getBook
($title)
public

function

getBook
($title)

{ // we use the previous function to get all the
books and then we return the requested one.
// in a real life scenario this will be done
through a db select command
$
allBooks
= $this
-
>
getBookList
();
$
allBooks
=

$this
>
getBookList
();
return $allBooks[$title];
}
}
10
Bài 2: Xây dựng ứng dụng theo mô hình MVC
22
XâXâ
dd
CtllCtll
2
.

2
.

y

y
d
ựng
d
ựng
C
on
t
ro
ll
er
C
on
t
ro
ll
er

Controller
được
xem



bắp


của
ứng

Controller

được
xem


bắp

của
ứng
dụng.
 Mọithứ mà người dùng có thể thựchiện
trên
trang
web
đều
được
thể
hiện
trong
trên
trang
web

đều
được

thể
hiện
trong
Controller.
Đ
iề
khiể
á
kiệ

ời

ó

Đ
iề
u
khiể
nc
á
csự
kiệ
nc

angư
ời

ng c
ó
ảnh hưởng đến Model và View

11
Bài 2: Xây dựng ứng dụng theo mô hình MVC
22
XâXâ
dd
CtllCtll
2
.
2
.

y

y
d
ựng
d
ựng
C
on
t
ro
ll
er
C
on
t
ro
ll
er



dụ
:
cũng
với

dụ
trên


dụ
:

cũng
với

dụ
trên
– Phân tích: Ta thấycầnphảixâydựng một
ế


Controller tương tác đ
ế
n Model đ

l

ydữ liệu

theo yêu cầuvàtương tác đếnView hiểnthị
dữ liệucóđượctừ Model .
12
Bài 2: Xây dựng ứng dụng theo mô hình MVC
22
XâXâ
dd
CtllCtll
2
.
2
.

y

y
d
ựng
d
ựng
C
on
t
ro
ll
er
C
on
t
ro

ll
er
class Controller {
class

Controller

{
public $model;
public function __construct()
{
$this->model = new bookModel();
}
}

public function invoke()
{
if (!isset($_GET['book']))
{
//
khi
người
dùng
chưa
lựa
chọn
thì
sẽ
hiển
//


khi
người
dùng
chưa
lựa
chọn
thì
sẽ
hiển
thị danh mục sách
$books = $this->model->getBookList();
include 'view/booklist.php';
}
13

×