Tìm hiểu về Zend Framework
 
Chương I: Giới thiệu framework
I. Framework là gì?
• Một cấu trúc mới của ngôn ngữ giúp phát triển các 
phần mềm.
• Một thư viện được xây dựng sẵn để người lập trình sử 
dụng.
• Các chuẩn để xây dựng một framework:
o MVC: có hỗ trợ Model-Control-View?
o Multiple DB’s: làm việc được với nhiều loại 
database?
o ORM: có hỗ trợ Object-Relation-Mapper?
o Templates: có hỗ trợ cho template engine?
o AJAX, validation, caching?
o Auth Module: có module xác thực người dùng?
o Module: tích hợp các module tiện ích như 
PDF,RSS…
o EDPnew (Event Driven Programming): có hướng 
sự kiện?
II. Tại sao chúng ta lại phải sử dụng framework?
• Tăng tốc quá trình phát triển ứng dụng
• Giảm thời gian và sự nỗ lực để có được một dự án.
• Cung cấp sẵn các module cần thiết để xây dựng một 
project.
• Dễ nâng cấp, sửa chữa do có sự phân hóa rõ ràng của 
mô hình MVC
III. Các thành phần cơ bản của một framework:
• Code Library: thư viện source code giúp các lập trình 
viên tra cứu về lập trình. Hỗ trợ 30 ngôn ngữ lập trình: 
C#, Java, VB, PHP, Javascript…
 Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
• Scripting Language: sử dụng ngôn ngữ kịch bản
• API: sử dụng các hàm API xây dựng sẵn 
IV. Các PHP framework phổ biến hiện nay:
• Trong vài năm qua, PHP đã tiến triển thành một ngôn 
ngữ script được lựa chọn hầu hết bởi các nhà phát triển 
website, dẫn đến sự bùng nổ của PHP framework. Câu 
hỏi đặt ra: “Hiện nay, PHP framework nào là phổ biến 
nhất? ”
• Dưới đây là 5 framework được đánh giá là phổ biến và 
tốt nhất hiện nay:
o Zend Framework: có một cộng đồng phát triển rộng
lớn, và nó tập trung phát triển ứng dụng web theo 
phong cách 2.0. Nó có các tính năng mạnh mẽ, phải
có kiến thức sâu rộng về PHP để có thể sử dụng nó.
o CakePHP: lựa chọn tuyệt vời cho các lập trình viên 
có kiến thức nâng cao về php. Một framework 
mạnh về khía cạnh rapid development, đẩy mạnh 
quá trình phát triển ứng dụng, có hệ thống hỗ trợ, 
tính đơn giản và môi trường mở cao
o Symfony: nhằm mục đích giúp đỡ các lập trình 
viên nâng cao hơn các website doanh nghiệp, là 
một PHP framework mã nguồn mở, có đầy đủ tính 
năng cần thiết, nhưng lại hạn chế về mặt tốc độ so 
với các framework khác.
o CodeIgniter: dễ hiểu, dễ sử dụng, hiệu suất cao, lý 
tưởng cho việc xây dựng các ứng dụng lưu trữ, chia
sẻ dữ liệu. Phù hợp cho người mới làm quen với 
framework.
o Seagull: một framework cực kỳ dễ sử dụng cho 
người mới cũng như chuyên gia về PHP, cung cấp 
mẫu ứng dụng tùy chỉnh để phù hợp với nhu cầu,  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
cung cấp các tùy chọn máy chủ để xây dựng ứng 
dụng web nhanh và dễ dàng.
Chương 2: Mô hình MVC trong framework
I. Mô hình MVC là gì?
• Cách thức làm việc của một PHP framework phải 
kể đến Model-View-Controller (MVC).
• MVC là một mô hình trong lập trình, cho phép 
tách biết các mã nghiệp vụ (bussiness logic) và giao diện 
(UI) thành cách thành phần riêng biệt.
• MVC:
o Model : được giao nhiệm vụ cung cấp dữ liệu cho 
cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ 
liệu. Tất cả các nghiệp vụ logic được thực thi ở  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
Model. Dữ liệu vào từ người dùng sẽ thông qua 
View đến Controller và được kiểm tra ở Model 
trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác 
nhận, và lưu dữ liệu là một phần của Model
o View : View hiển thị các thông tin cho 
người dùng của ứng dụng và được giao nhiệm vụ 
cho việc nhận các dữ liệu vào từ người dùng, gửi đi
các yêu cầu đến controller, sau đó là nhận lại các 
phản hồi từ controller và hiển kết quả cho người 
dùng. Các trang HTML, JSP, các thư viện thẻ và 
các file nguồn là một phần của thành phần View.
Trong các web framework, nó gồm 2 phần chính:
+ Template file định nghĩa cấu trúc và cách thức 
trình bày dữ liệu cho user. Ví dụ như layout, color, 
windows …
+ Logic xử lý cách áp dụng dữ liệu vào cấu trúc 
trình bày. Logic này có thể bao gồm việc kiểm tra 
định dạng dữ liệu, chuyển đổi định dạng dữ liệu 
sang một sạng dữ liệu trung gian, lựa chọn một cấu 
trúc hiện thị phù hợp.
o Controller : controller đảm nhiệm việc cập nhật bộ 
phận hiển thị (View) khi cần thiết. Bộ điều khiển 
này nhận dữ liệu nhập từ người dùng, truy xuất các 
thông tin cần thiết từ mô hình trong (Model), và 
cập nhật thích hợp phần hiển thị (View). Giao diện 
với người sử dụng phần mềm được thiết lập nhờ sự 
tương tác qua lại giữa View và 
Controller: hai bộ phận này chính là phần trình bày 
bên ngoài của đối tượng biểu diễn bên trong.
MVC chia nhỏ quá trình xử lý của một ứng dụng, 
giúp người lập trình làm việc trên từng thành phần 
 Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
riêng lẻ, không ảnh hưởng đến các thành phần khác 
giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng 
cấp.
II. So sánh mô hình MVC với mô hình 3 lớp:
• Giống nhau:
o Cả hai đều để tách rời programming 
core/business logic ra khỏi những phụ thuộc về tài 
nguyên và môi trường.
o Trong một ứng dụng nhỏ, MVC thể hiện thế nào? 
Presentation thể hiện giống như chức năng của 
View và Controller. Business và Database thể hiện 
giống như chức năng của Model. Như thế nhìn ở 
góc độ này, thì MVC tương đương với 3-layer (tất 
nhiên có chồng chéo như hình vẽ)
• Khác nhau:
o Trong 3-layers, quá trình đi theo chiều dọc, 
bắt đầu từ Presentation, sang BL, rồi tới Data, và từ
Data, chạy ngược lại BL rồi quay ra lại 
Presentation. 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
o Còn trong mẫu Supervising Controller, dữ 
liệu được nhận bởi View, View sẽ chuyển cho 
Controller cập nhật vào Model, rồi sau đó dữ liệu 
trong Model sẽ được đưa lại cho View mà không 
thông qua Controller, do vậy luồng xử lý này có 
hình tam giác. 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
Chương 3: Zend Framework (ZF)
I. Giới thiệu Zend Framework:
1. Zend Framework là gì?
• ZF là một thư viện các lớp được xây dựng dựa trên nền 
tảng ngôn ngữ PHP, theo hướng OOP.
• ZF được định hướng theo mô hình MVC.
2. Ưu khuyết điểm của Zend Framework:
• ZF là một PHP framework ra đời khá trễ, tiếp thu những 
tinh hoa và khắc phục những sai lầm mà các framework 
trước mắc phải.
• Ưu điểm:
o ZF được viết theo kiểu OOP nên nó thừa hưởng các
thế 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 bạn có thể dùng thể dùng tính chất thừa kế của
OOP. Nói chung là chúng ta không phải chỉnh sửa 
core của ZF.
o Hầu như các version mới của ZF ko có nhiều thay 
đổi trong core nên ta có thể dễ dàng update.
o 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 - 
FCKEditer - Drupal 
o Các 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 - Syndication - Web Services  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
o 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
• Khuyết điểm:
o Mất nhiều thời gian để tìm hiểu về thư viện của ZF
o Một số lớp chưa ổn định, có sự thay đổi, gây khó 
khăn cho người sử dụng khi cập nhật các phiên bản.
3. Quá trình phát triển của Zend Framework:
• Trải qua giai đoạn hình thành và phát triển, Zend 
Framework hiện tại có 10 phiên bản, và phiên bản mới 
nhất hiện tại là 1.10:
o Zend Framework 1.10
o Zend Framework 1.9
o Zend Framework 1.8
o Zend Framework 1.7
o Zend Framework 1.6
o Zend Framework 1.5
o Zend Framework 1.0
o Zend Framework 0.9
o Zend Framework 0.8
o Zend Framework 0.6
II. Cách thức hoạt động của mô hình MVC trong Zend 
Framework:
• Bất cứ một ứng dụng nào được xây dựng theo mô 
hình MVC nào thì cũng điều phải tuân thủ những nguyên
tắc mà mô hình MVC mang lại.
• Khi có một request từ người dùng. Controller sẽ tiếp 
nhận request. Phân tích request, controller sẽ phân luồng 
request để gọi đến Model và View tùy vào request mà 
người dùng đã gửi 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
• Một ứng dụng xây dựng theo mô hình MVC cơ bản hoạt 
động theo nguyên tắc sau:
o Khi người sử dụng người gửi một request từ 
browser thì nơi đầu tiên tiếp nhận request đó đầu 
tiên là controller. 
o Dựa vào request nhận được, controller sẽ phân tích 
request, phân luồng request. Tùy vào request, mà 
controller sẽ phân luồng đến model và view.
 Ví dụ:
 Một request được controller chỉ phân 
luồng đến view. 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
Để đăng ký một tài khoản người 
sử dụng, thì trước hết phải có form 
đăng ký. Cách hoạt động để hiện form 
đăng ký này trong mô hình MVC hoạt 
động như sau: từ request Đăng Ký, 
controller tiếp nhận, controller phân 
tích và thấy request này không yêu cầu
đến cơ sở dữ liệu, do đó nó không 
tương tác với model, nó chỉ yêu cầu 
hiển thị form đăng ký, vì vậy controller
phải phân luồng đến view để đáp ứng 
yêu cầu của request. Sau đó, từ view 
trả dữ liệu về dưới dạng GUI. Cuối 
cùng là controller trả kết quả về trình 
duyệt một gói response dưới dạng 
HTML.
 Một request được controller phân luồng từ 
model đến view
Tiếp tục giai đoạn sau khi hiện được 
form đăng ký ra trình duyệt. Ví dụ, sau
khi đã validate form hợp lệ (AJAX). 
Khi người dùng submit form để gửi 
request yêu cầu đăng ký form, cũng 
theo nguyên tắc, controller sẽ tiếp nhận
request này, phân tích request. Lúc 
này, controller nhận thấy rằng request 
yêu cầu lưu thông tin người dùng vào 
CSDL. Lúc này, controller phân luồng 
request đến model đế đáp ứng request. 
Sau đó trả về cờ để báo cho controller
biết là việc lưu trữ có thành công hay  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
không? Dựa vào cờ này, controller lại 
tiếp tục phân luồng đến view để hiện 
thị thông tin đến người dùng là đăng 
ký có thành công hay không?
• Ngoài ra, mô hình MVC trong ZF còn có thể được tổng 
quát hóa bằng mô hình sau:
 Tóm lại, một ứng dụng được xây dựng theo mô hình 
MVC hoạt động tổng quát như sau: Tiếp nhận request từ 
trình duyệt dưới dạng HTML. Sau đó được biên dịch thông 
qua Java Servlet  controller tiếp nhận, phân tích request  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
để phân luồng đến model và view. Cuối cùng trả về trình 
duyệt dưới dạng một response HTML.
III. Cấu trúc thư mục của một project trong ZF:
• Đối với mỗi project được xây dựng trong ZF đều có cấu 
trúc thư mục của một project như sau:
o application/
 models/
 Mỗi lớp sẽ đảm nhận việc kết
nối và thao tác đến table trong cơ
sở dữ liệu.
 Cung cấp tập hợp các lớp được
trừu tượng hóa sử dụng cho việc
truy xuất dữ liệu: Zend_DB,
Zend_DB_Table
 views/
 scripts : Chứa các file ánh xạ
đến các controller/action để hiển
thị trang giao diện tương ứng.
 helpers : chứa các lớp mà user
tạo ra và các lớp này sẽ được nạp
tự động cho đối tượng
Zend_View thông qua
Zend_View_Helper để gọi đến
hàm được xây dựng trong lớp 
 filters : chứa các lớp giúp cho
chúng ta có thể thay đổi hoặc xóa 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
những dữ liệu không mong muốn trong quá trình
nhập liệu
 controllers/
 Là phần điều khiển toàn bộ logic về hoạt động 
của giao diện, tương tác với thao tác của người 
dùng và cập nhật, thao tác trên dữ liệu theo đầu 
vào nhận được và điều khiển việc chọn phần 
“Hiển thị” thích hợp để truyền dữ liệu tới người 
dùng.
 Controller làm nhiệm vụ điều hành trang web, 
một trang web có thể có nhiều
module , một module có thể có
nhiều controller. Một controller sẽ
gồm nhiều action .
Zend Framework sử dụng đối
tượng Front Controller để quản lý
các Request được gởi đến Web
server. Và dựa trên Request đó, nó
sẽ gọi các lớp xử lý Model và trả
về kết quả trình bày với các lớp
View.
Ví dụ: Trong website eshop sẽ có
UserController bao gồm các actio
như:loginAction,registerAction,displayprofileAc
tion,…
 Chứa các lớp mở rộng từ Zend_Action.
 Thực hiện nhiệm vụ điều hành trang.
 configs/  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
 Chứa các file config của project: application.ini
 bootstrap.php
 Cần có 1 file quan trọng chính là bootstrap, làm 
nhiệm vụ “đón đầu” tất cả các request vào, sau 
đó khởi tạo controller và dispatch request đến 
controller tương ứng 
o library/
 Thư mục chứa các thư viện do người dùng tự định 
nghĩa
o public/
 Thư mục chứa tập tin index.php, font controller cho
trang web.
 Thư mục chứa các tập tin script: css, javascript, 
ảnh…
Tóm lại, cấu trúc cây thư mục của một project được tổ chức rất 
rõ ràng về mặt hình thức lẫn chức năng. Điều này giúp người sử 
dụng thuận tiện hơn rất nhiều trong quá trình làm việc.
Chương 4: Cài đặt và cấu hình thư viện Zend Framework 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
Chương 5: Các lớp trong mô hình MVC
I. Các lớp cơ bản theo mô hình MVC trong Zend Framework:
A. Zend_DB: (Dũng)
B. Zend_View(Lụa)
1. Zend_View:
•Zend_View là lớp làm việc cho phần View trong mô 
hình cấu trúc MVC.Tức là nó tồn tại để giữ View 
script tách khỏi Model và Controller scripts.
• Nó còn cung cấp một hệ thống helpers, filters, và 
variable escaping.
Zend_View cho phép chúng ta chia cắt chương trình 
và giao nhiệm vụ hiển thị giao diện theo mổi phương 
thức Actionđó,nghĩa là mổi Action này sẽ đi với một 
trang hiển thị ra trình duyệt
•ViewRenderer 
(Zend_Controller_Action_Helper_ViewRenderer) lo 
việc nạp các thuộc tính view ($this->view) và đảm 
trách cả phần giao trả giá trị choviewscript.Để công 
việc giao trả được chính xác, lớp này tạo dựng 1 đối 
tuợng Zend_View dùng để tìm kiếm và giao trả cho 
tập tin view trong thư mục views/scripts/{controller 
name}.
• Tên tệp tin sau khi đựợc giao trả sẽ có đuôi là .phtml
(views/scripts/{controller name}/
{action_name}.phtml ).
•Mặc định thì ViewRenderer được enable,bạn có thể 
disable nó bằng cách thêm vào dòng lệnh sau trước 
khi dispatch font controller trong file bootstrap: 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework 
//Disable ViewRenderer helper
$front->setParam(‘noViewRenderer’,true);
o Về bản chất ,Quá trình này Có 2 bước chính :
 Script Controller của bạn sẽ tạo một thể hiện của
Zend_view và gán các biến mà nó thể hiện.
o Controller sẽ yêu cầu Zend_View giao trả một
View riêng để sinh mã đưa ra ngoài ,bằng cách
giao quyền điều khiển cho view sript .
Trang được giao trả này bao gồm tất cả các thứ
như HTTP, headers, phần body cũng như mọi
exceptions có liên quan đến cách dùng qua hệ
thống MVC.Front Controller có nhiệm vụ tự động
gởi các thông tin của header, kế đến nội dung
(body content) và cuối cùng kích họat để chạy
chương trình (dispath).
2. Cách thành phần có trong Zend_View:
C. Zend_Controller(Âu)
D. Zend_Application:
II. Một số lớp khác trong Zend Framework:
1. Zend_Form: 
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng
Tìm hiểu về Zend Framework  
Khoa Công Nghệ Thông Tin
Trường đại học Tôn Đức Thắng