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
ZEND FRAMEWORK 2
ZEND
FRAMEWORK
2
1
TRUNG TÂ M TIN HỌC
ĐẠI HỌC KHOA HỌC TỰ NHIÊN-TP.HCM
Bài 1: Tổng quan Zend
Framework 2 (ZF2)
1. Giới thiệu ZF
2.
Lý do chọnZF
2.
Lý
do
chọn
ZF
3. Giới thiệu ZF2
4. Zend MVC
5
Cài đặtvàcấu hình ZF2
5
.
Cài
đặt
và
cấu
hình
ZF2
2
Bài 1: Tổng quan ZF2
11
Giớithiệ ZFGiớithiệ ZF
11
. .
Giới
thiệ
u
ZFGiới
thiệ
u
ZF
Zend Framework là một PHP Framework đuợclậptrình
Zend
Framework
là
một
PHP
Framework
đuợc
lập
trình
bằng ngôn ngữ PHP và dựa trên mô hình MVC, giúp
tách các thành
p
hần xử l
ý
ra một cách rõ ràn
g
cho
p ý g
website của bạn, giúp cho code được dễ dàng quản lý,
chỉnh sửa và nâng cấp.
–
Sử dụng PHP 5
– Viết huớng đối tuợng
– Cung cấp mô hình tiên tiến MVC
– Là 1 phần mềm nguồn mở có sự hỗ trợ cộng đồng
– Cung cấp 1 loạt các ứng dụng API của các nhà cung
cấp hàng đầu như Google, Yahoo, Flick
3
Bài 1: Tổng quan ZF2
Sử d ZF đểSử d ZF để
Sử
d
ụng
ZF
để
…
Sử
d
ụng
ZF
để
…
Tạo ứng dụng web theo mô hình chuẩnMVC
–
Tạo
ứng
dụng
web
theo
mô
hình
chuẩn
MVC
– Url tiêu chuẩn, ngắn gọn
ỗ ề
–
H
ỗ
trợ phân quy
ề
n tới từng Action
–
Có các thành
p
hần thư viên hỗ tr
ợ
API của
p ợ
các nhà cung cấp như Google, Yahoo, Flick
–
Quản lý code dễ dàng, liệtkêvàlấy các truy
Quản
lý
code
dễ
dàng,
liệt
kê
và
lấy
các
truy
vấn history
Dễ dàng phát triển thêm các ứng dụng nhúng
–
Dễ
dàng
phát
triển
thêm
các
ứng
dụng
nhúng
,
sử dụng Plugins
4
Bài 1: Tổng quan ZF2
2Lýd h ZF2Lýd h ZF
2
.
Lý
d
o c
h
ọn
ZF2
.
Lý
d
o c
h
ọn
ZF
–
Có rất nhiềuthư viện đượchỗ trợ sẵn
–
Có
rất
nhiều
thư
viện
được
hỗ
trợ
sẵn
– Là một PHP Framework được do chính công ty phát
triển ngôn ngữ PHP phát triển(
www.zend.com
).
triển
ngôn
ngữ
PHP
phát
triển
(
www.zend.com
).
– được xây dựng trên nền tảng lập trình hướng đối
tư
ợ
n
g
nên có thể thừa kế
,
nân
g
cấ
p
các ứn
g
d
ụ
n
g
ợ g ,gp g ụ g
một cách dễ dàng.
– Những thành viên phát triển Zend Framework là
những chuyên gia nổi tiếng về mã nguồn mở và PHP
trên thế giới.
ẩ
–
Mô hình MVC hoặc không theo chu
ẩ
n MVC trong
Zend Framework rất linh hoạt giúp chúng ta có thể
tùy biếncấuhìnhứng dụng theo ý muốn
tùy
biến
cấu
hình
ứng
dụng
theo
ý
muốn
.
5
Bài 1: Tổng quan ZF2
2Lýd h ZF2Lýd h ZF
2
.
Lý
d
o c
h
ọn
ZF2
.
Lý
d
o c
h
ọn
ZF
–
Tích hợpcácthư viện các thành phần khác mộtcách
–
Tích
hợp
các
thư
viện
,
các
thành
phần
khác
một
cách
linh hoạt và nhanh chóng.
–
Có tài liệu để tham khảo
Có
tài
liệu
để
tham
khảo
– Cộng đồng người sử dụng Zend Framework lớn.
–
Những ứng dụng lớnhiện nay đãdần chuyển qua
Những
ứng
dụng
lớn
hiện
nay
đã
dần
chuyển
qua
dùng Zend Framework làm nền tảng.
–
Nhu cầu tu
y
ển d
ụ
n
g
l
ập
trình viên biết Zend
y ụ g ập
Framework lớn
–
Bảo mật của các ứn
g
dụn
g
rất tốt nên tránh được các
g g
lỗi thường gặp trong các ứng dụng viết bằng PHP
thường.
6
Bài 1: Tổng quan ZF2
3Giớithiệ ZF23Giớithiệ ZF2
3
.
Giới
thiệ
u
ZF23
.
Giới
thiệ
u
ZF2
Zend Framework 2 là một framwork mã
–
Zend
Framework
2
là
một
framwork
mã
nguồn mở dùng cho việc phát triển các ứng
dụng web sử dụng PHP 5 3 x zend
dụng
web
sử
dụng
PHP
5
.
3
.
x
.
zend
Framework được xây dựng hoàn toàn theo
hướng đốitượng OOP và sử dụng hầuhết
hướng
đối
tượng
OOP
và
sử
dụng
hầu
hết
các đặc điểm mới của PHP 5.3 như
namespaces late static binding phương thức
namespaces
,
late
static
binding
,
phương
thức
lambda và closures.
Z d F k 2 hát t iể từ Zd
–
Z
en
d
F
ramewor
k
2
p
hát
t
r
iể
n
từ
Z
en
d
Framework 1, một framework PHP rất thành
ô ớih 15 t iệ l ttải ề
c
ô
ng v
ới
h
ơn
15
t
r
iệ
u
l
ượ
t
tải
v
ề
.
7
Bài 1: Tổng quan ZF2
Đặ điể ZF2Đặ điể ZF2
Đặ
c
điể
m
ZF2Đặ
c
điể
m
ZF2
Cấutrúcmới:
Cấu
trúc
mới:
– Theo mô hình MVC, sử dụng Di, Events, Service,
Module
Module
Cải tiến về chức năng
Sử dụngPHP533
Sử
dụng
PHP
5
.
3
.
3
PSR – 2 compliant (hỗ trợ pyrus, composer)
Hệ thống đóng gói
Hệ
thống
đóng
gói
ZF được viết theo kiểu OOP nên nó thừa hưởng các thế
mạnh củakiểuviết này. Các lớpcủaZFđượcBA
mạnh
của
kiểu
viết
này.
Các
lớp
của
ZF
được
BA
(Business Analysis) rất chuẩn và khi cần mở rộng ta có
thể dùng thể dùng tính chất thừa kế của OOP. Nói
chung là ta không phải chỉnh sửa core của ZF.
8
Bài 1: Tổng quan ZF2
Đặ điể ZF2Đặ điể ZF2
Đặ
c
điể
m
ZF2Đặ
c
điể
m
ZF2
Hầunhư các version mớicủa ZF không có nhiều thay
Hầu
như
các
version
mới
của
ZF
không
có
nhiều
thay
đổi trong core nên ta có thể dễ dàng update.
ZF tích hợp đượcgầnnhư tấtcả các thư việnPHPvà
ZF
tích
hợp
được
gần
như
tất
cả
các
thư
viện
PHP
và
các CMS khác để sử dụng. VD: Smarty - Pear -
FCKEditor - Drupal …
Cách viết của ZF rất thân thiện và đơn giản. Tích hợp
những mới nhất của lập trình web như: JSON - Search -
Sditi
WbS i
S
yn
di
ca
ti
on -
W
e
b
S
erv
i
ces
ZF được sử dụng trong các dự án lớn và có kế hoạch
phát triển dài lâu
phát
triển
dài
lâu
9
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
KiếntrúcMVCcủa ZF2
Kiến
trúc
MVC
của
ZF2
10
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Zend
\
Mvc là một nhánh thựchiệnMVCmới
Zend
\
Mvc
là
một
nhánh
thực
hiện
MVC
mới
được thiết kế cho ZF2, tập trung vào hiệu suất
và tính linh hoạt
và
tính
linh
hoạt
.
MVC layer được xây dựng ở phía trên của các
thà h hầ
thà
n
h
p
hầ
n sau:
– Zend\ServiceManager – ZF2 cung cấp một bộ các
định nghĩadịch mặc định đợcthiếtlập ở
định
nghĩa
dịch
vụ
mặc
định
đ
ư
ợc
thiết
lập
ở
Zend\Mvc\Service. ServiceManager tạo và cấu hình
instance và workflow trong ứng dụng
instance
và
workflow
trong
ứng
dụng
.
11
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
–
Zend
\
EventManager
–
MVC là một event driven
–
Zend
\
EventManager
–
MVC
là
một
event
driven
.
Thành phần này được sử dụng mọi nơi từ khởi tạo
ban đầu của ứn
g
dụn
g
, thôn
g
q
ua việc
g
ọi trả về của
g ggq g
response và request, để thiết lập và nhận các định
tuyến và các định tuyến phù hợp (tương ứng), cũng
h dái
n
h
ư ren
d
er c
á
c v
i
ew.
– Zend\Http – đặc biệt là các đối tượng request và
response đượcsử dụng trong:
response
,
được
sử
dụng
trong:
– Zend\Stdlib\DispatchableInterface. Tất cả các
“
controller
”
đơngiảnlàđốitượng dispatchable
controller
đơn
giản
là
đối
tượng
dispatchable
.
12
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Trong MVC layer có mộtsố thành phầncon
Trong
MVC
layer
,
có
một
số
thành
phần
con
được giới thiệu:
Zend
\
Mvc
\
Router ch
ứacáclớp liên quan đến định
–
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ủanó(hoặc
tới
các
controller
tương
ứng
của
nó
(hoặc
dispatchable).
–
Zend
\
Htt
p
\
Ph
p
Environment cun
g
cấ
p
m
ộ
t b
ộ
p
pgp ộ ộ
decorator cho các đối tượng HTTP Request và
Response nhằm đảm bảo là các request được đưa
à
ôi t ờ hiệ t i(b ồ á
v
à
o m
ôi
t
rư
ờ
ng
hiệ
n
t
ạ
i
(b
ao g
ồ
m c
á
c query
parameter, POST parameter, HTTP header )
13
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
–
Zend
\
Mvc
\
Controller mộtbộ các lớp
“
controller
”
tr
ừu
–
Zend
\
Mvc
\
Controller
,
một
bộ
các
lớp
controller
tr
ừu
tượng với các trách nhiệm cơ bản như hệ thống các
event, action
g
ửi đi…
g
– Zend\Mvc\Service cung một bộ các yếu tố và định
nghĩa ServiceManager workflow của ứng dụng mặc
định.
– Zend\Mvc\View cung cấp các thông số mặc định cho
dltiđộ hâ iảii itđă ký
ren
d
erer se
l
ec
ti
on,
độ
p
hâ
n g
iải
v
i
ew scr
i
p
t
,
đă
ng
ký
helper…; ngoài ra, nó cung cấp các listener liên lạc
với MVC workflow cung cấpcáctínhnăng như phân
với
MVC
workflow
,
cung
cấp
các
tính
năng
như
phân
giải tên template tự động, tạo view model tự động
14
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Gateway củaMVClàđốitượng
Gateway
của
MVC
là
đối
tượng
Zend\Mvc\Application (gọi tắt là “Application”).
Nhiệ hí h ủ “A li ti ” là khởit á
Nhiệ
m vụ c
hí
n
h
c
ủ
a
“A
pp
li
ca
ti
on
”
là
khởi
t
ạo c
á
c
tài nguyên, định tuyến request, nhận và gửi
tll hùh táátìhđị h
con
t
ro
ll
er p
hù
h
ợp
t
rong c
á
c qu
á
t
r
ì
n
h
đị
n
h
tuyến. Sau khi hoàn thành, nó sẽ render view,
hà thàh á ttả ề à ửi
h
o
à
n
thà
n
h
c
á
c reques
t
,
t
r
ả
v
ề
v
à
g
ửi
response.
15
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Cấutrúcứng dụng cơ bản:
Cấu
trúc
ứng
dụng
cơ
bản:
16
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Cấutrúcứng dụng cơ bản:
Cấu
trúc
ứng
dụng
cơ
bản:
– Tập tin public/index.php: gồm tất cả các yêu cầu
(request) củangười dùng đến website nhậnmột
(request)
của
người
dùng
đến
website
,
nhận
một
mảng các cấu hình đặt tại tập tin
confi
g
/a
pp
lication.confi
g
.
p
h
p,
khi trả về nó
gọ
i
gpp gpp, gọ
phương thức run() của “Application”, xử lý yêu cầu và
gửi lại phản hồi cho người dùng.
ấ
–
Thư mục config chứa c
ấ
u hình được sử dụng bởi
Zend\ModuleManager để tải các module và cấu hình
hợpnhất
hợp
nhất
.
17
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
–
Thư mục
vendor
:chứa các module hoặcthư viện
–
Thư
mục
vendor
:
chứa
các
module
hoặc
thư
viện
của tổ chức thứ ba mà ứng dụng cần dùng tới. Nó có
thể bao
g
ồm cả ZF hoặc các thư viện từ các dự án
g
khác, không nên sửa đổi trạng thái ban đầu của các
thư viện và module đặt trong thư mục vendor chúng.
ề
–
Thư mục module: chứa một hoặc nhi
ề
u module cung
cấp các chức năng của ứng dụng
18
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Cấu trúc module cơ bản:
Cấu
trúc
module
cơ
bản:
– Trong một module có thể chứa: code PHP, gồm cả
chứcnăng MVC code thư viện view script và các tài
chức
năng
MVC
,
code
thư
viện
,
view
script
và
các
tài
nguyên chung như: hình ảnh, CSS, JavaScript. Yêu
cầu du
y
nhất
–
có thể là tù
y
ch
ọ
n là m
ộ
t module ho
ạ
t
y
y ọ ộ ạ
động như một namespace PHP và nó chứa lớp
Module.php dưới namespace. Lớp này được
Zd
\
MdlM ử d để th hiệ ột ố
Z
en
d
\
M
o
d
u
l
e
M
anager s
ử
d
ụng
để
th
ực
hiệ
n m
ột
s
ố
nhiệm vụ.
19
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
20
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
–
Khi một module hoạt động như một namespace thư
–
Khi
một
module
hoạt
động
như
một
namespace
,
thư
mục module cũng phải có tên là tên của namespace.
Names
p
ace nà
y
cũn
g
có thể bao
g
ồm một tiền tố của
pyg g
nhà cung cấp.
•Ví dụ: Module liên quan đến “User” có chức năng được cung
ấ bởiZ dthì óthể đặttê là“Z dU ”
c
ấ
p
bởi
Z
en
d
thì
c
ó
thể
đặt
tê
n
là
“Z
en
dU
ser
”
.
– Tập tin Module.php sẽ nằm trong thư mục –
namespace này
namespace
này
.
namespace ZendUser;
class Module
{
21
}
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Có ba tập tin
autoload
*
php
không bắtbuộc
Có
ba
tập
tin
autoload
_.
php
không
bắt
buộc
,
nhưng khuyến khích nên có, đó là:
autoload classmap php
:trả về mảng classmap của
–
autoload
_
classmap
.
php
:
trả
về
mảng
classmap
của
các cặp class name/filename (với các tên tập tin
được thông qua hằng số
DIR ).
được
thông
qua
hằng
số
_
_
DIR
__
).
– autoload_function.php: trả về một callback PHP mà
có thể thôn
g
q
ua s
p
l autoload re
g
ister
()
. Thôn
g
gq p
__
g() g
thường callback này nên sử dụng ánh xạ được trả về
bởi autoload_classmap.php.
– autoload_register.php: nên đăng ký một PHP
callback (thường được trả về bởi
autoload function php v
ới
spl autoload register())
autoload
_
function
.
php
v
ới
spl
_
autoload
_
register())
.
22
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Đặc điểmcủa ba file này là cung cấpcáccơ chế
Đặc
điểm
của
ba
file
này
là
cung
cấp
các
cơ
chế
mặc định phù hợp để tự động tải các lớp trong
module do đó cung cấpcáchthứcdễ dàng để
module
,
do
đó
cung
cấp
cách
thức
dễ
dàng
để
thực thi module mà không cần
Zend
\
ModuleManager
Zend
\
ModuleManager
23
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Thư mục
config
: nên chứacáccấu hình module
Thư
mục
config
:
nên
chứa
các
cấu
hình
module
cụ thể. Các file này có đĩnh dạng được hỗ trợ
của Zend
\
Config Cấu hình chính nên là
của
Zend
\
Config
.
Cấu
hình
chính
nên
là
“module.format”, và cấu hình dựa trên PHP nên
là
“
module config php
”
là
module
.
config
.
php
.
Thư mục src: tuân thủ cấu trúc thư mục chứa
d ủ dl Nê óít hất ộtth
source co
d
e c
ủ
a mo
d
u
l
e.
Nê
n c
ó
ít
n
hất
m
ột
th
ư
mục con trong thư mục namespace.
24
Bài 1: Tổng quan ZF2
4Z dMVC4Z dMVC
4
.
Z
en
d
MVC4
.
Z
en
d
MVC
Thư mục
view
:chứa các view script có liên
Thư
mục
view
:
chứa
các
view
script
có
liên
quan tới các controller.
Th
tt
hứ áitttủ ứ d
Th
ư mục
t
es
t
: c
hứ
a c
á
c un
it
t
es
t
c
ủ
a
ứ
ng
d
ụng.
Thông thường sử dụng PHPUnit, và chứa các
ế tố liê đế ấ hì h ủ ó( íd h
y
ế
u
tố
liê
n quan
đế
n c
ấ
u
hì
n
h
c
ủ
a n
ó
(
v
í
d
ụ n
h
ư
phpunit.xml, bootstrap.php)
Thư mục public: chứa những thứ dùng chung
cho ứng dụng, có thể là thư mục images, CSS,
JavaScript…
25