Tải bản đầy đủ (.doc) (86 trang)

xây dựng website chùa thạnh lâm trên nền 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 (3.72 MB, 86 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
TRẦN MẠNH PHI - 0851120056
HỒ THANH BÌNH - 0851120005
XÂY DỰNG WEBSITE CHÙA THẠNH LÂM
TRÊN NỀN ZEND FRAMEWORK
KHÓA LUẬN TỐT NGHIỆP KỸ SƯ CNTT
GIÁO VIÊN HƯỚNG DẪN
ThS. Đặng Nhân Cách
NIÊN KHÓA 2008 - 2012
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN




























i
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN




























ii
LỜI CÁM ƠN
Sau hơn ba tháng nỗ lực thực hiện khóa luận tốt nghiệp "Xây dựng website
cho chùa Thạnh Lâm trên nền Zend Framework" đã phần nào hoàn thành. Ngoài sự
cố gắng của bản thân, chúng tôi đã nhận được sự khích lệ rất nhiều từ phía nhà
trường, thầy cô, gia đình và bạn bè.
Để có thể hoàn thành khóa luận này, trước hết chúng tôi xin gửi lời cảm ơn
đến tập thể giảng viên trường Đại học Giao Thông Vận Tải Thành Phố Hồ Chí
Minh đã tận tình giảng dạy, truyền đạt kiến thức quý báu giúp chúng tôi có được
nền tảng chuyên môn vững chắc và tiếp cận những phương pháp nghiên cứu khoa
học trong suốt thời gian theo học tại trường.
Đặc biệt chân thành bày tỏ lòng cảm ơn sâu sắc đến thầy Thạc Sĩ Đặng Nhân
Cách là người đã tận tình hướng dẫn và giúp đỡ chúng tôi thực hiện khóa luận này.
Bên cạnh đó, chúng tôi xin cảm ơn gia đình và bạn bè đã luôn bên cạnh ủng hộ,
giúp đỡ trong quá trình thực hiện khóa luận.
Sinh viên thực hiện
Trần Mạnh Phi
Hồ Thanh Bình
iii
Khoa Công Nghệ Thông Tin
Bộ môn mạng máy tính và truyền thông
ĐỀ CƯƠNG CHI TIẾT
Tên đề tài: Xây dựng website chùa Thạnh Lâm trên nền Zend Framework

Giáo viên hướng dẫn: ThS. Đặng Nhân Cách
Thời gian thực hiện: Từ 24/09/2012 đến 20/12/2012
Sinh viên thực hiện:
• Trần Mạnh Phi – 0851120056
• Hồ Thanh Bình – 0851120005
Loại đề tài:
• Tìm hiểu Zend Framework.
• Xây dựng website chùa Thạnh Lâm.
Nội Dung Đề Tài:
• Nghiên cứu công nghệ Zend Framework và các lĩnh vực khác liên quan đến
lập trình thiết kế web.
• Tìm hiểu cách thức hoạt động, quản lý của chùa Thạnh Lâm.
• Vận dụng vấn đề đã nghiên cứu để xây dựng website chùa Thạnh Lâm.
• Đưa website chùa Thạnh Lâm vào hoạt động thực tiễn.
Kế Hoạch Thực Hiện:
Tuần Thời gian Nội dung Phân công
1 24/09/2012
30/09/2012
Tìm hiểu Zend
Tham khảo website
Thiết kế layout
Phi, Bình
Phi, Bình
Phi
2 01/10/2012
07/10/2012
Chỉnh sửa, cắt ghép layout
Soạn thảo dàn ý lý thuyết
Phi
Bình

3 08/10/2012
17/10/2012
Phân tích và thiết kế CSDL
Soạn thảo lý thuyết
Phi
Bình
4 15/10/2012
21/10/2012
Code admin: loại tin, tin tức
Code admin: thành viên, loại thành viên
Phi
Bình
5 22/10/2012
28/10/2
Soạn thảo bài báo cáo
Code admin: login admin
Phi
Bình
iv
12
6 29/10/2012
04/11/2012
Code admin: liên kết, giới thiệu, liên hệ
Code admin: chức vụ, tập ảnh, hình
Phi
Bình
7 05/11/2012
11/11/2012
Code admin: loại thơ, thơ, loại sách, sách
Code admin: loại nhạc, nhạc, loại phim, phim

Phi
Bình
8 12/11/2012
18/11/2012
Code admin: câu hỏi, trả lời, bình luận
Code admin: phân quyền ACL
Phi
Bình
9 19/11/2012
25/11/2012
Lập trình và thiết kế trang người dùng Phi, Bình
10 26/11/2012
02/12/2012
Lập trình và thiết kế trang người dùng Phi, Bình
11 03/12/2012
09/12/2012
Lập trình và thiết kế trang người dùng
Soạn thảo bài báo cáo
Phi, Bình
Phi
12 10/12/2012
16/12/2012
Lập trình và thiết kế trang người dùng
Soạn thảo bài báo cáo
Soạn thảo HTML
Soạn thảo powerpoint
Phi, Bình
Phi
Bình
Phi

Xác nhận của GVHD
Ngày……tháng……năm……
SV Thực hiện
ThS. Đặng Nhân Cách Trần Mạnh Phi Hồ Thanh Bình
v
MỤC LỤC
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM 1
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN i
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ii
LỜI CÁM ƠN iii
ĐỀ CƯƠNG CHI TIẾT iv
MỤC LỤC vi
DANH SÁCH CÁC BẢNG vii
DANH SÁCH CÁC HÌNH viii
DANH SÁCH CÁC CHỮ VIẾT TẮT, CHỮ TIẾNG ANH ix
MỞ ĐẦU xi
1.1.Gi i thi uớ ệ 1
1.2.M c tiêuụ 1
1.3.Ph m vi đ tàiạ ề 2
1.4.B c c báo cáoố ụ 2
2.1.C s d li u MySQLơ ở ữ ệ 3
2.2.Ngôn ng đánh d u siêu v n b n - HTMLữ ấ ă ả 3
2.3.Cascading Style Sheet – CSS 4
2.4.Ngôn ng l p trình PHPữ ậ 4
2.5.L p trình h ng đ i t ngậ ướ ố ượ 5
2.6.Zend Framework 7
2.6.1.Gi i thi uớ ệ 7
2.6.2.Mô hình MVC trong Zend Framework 8
2.6.3.C b n v các thành ph n trong Zend Frameworkơ ả ề ầ 9
2.6.4.Các l p c b n trong th vi n Zend Frameworkớ ơ ả ư ệ 11

2.6.5. u đi m và khuy t đi mƯ ể ế ể 33
3.1.Kh o sátả 35
3.2.Phân tích 36
3.3.L p trình và thi t kậ ế ế 37
3.3.1.Công c và ngôn ng s d ngụ ữ ử ụ 37
3.3.2.Thi t k c s d li uế ế ơ ở ữ ệ 38
3.3.3.S đ trang webơ ồ 47
4.1.Các ch c n ng c a trang webứ ă ủ 50
4.2.Các ng d ng trong trang webứ ụ 66
4.2.1. ng d ng công ngh Zend Framework vào trang webỨ ụ ệ 66
4.2.2.Các ng d ng khácứ ụ 67
5.1.Tóm t tắ 72
5.2.H ng phát tri nướ ể 72
TÀI LIỆU THAM KHẢO 74
vi
DANH SÁCH CÁC BẢNG
vii
DANH SÁCH CÁC HÌNH
viii
DANH SÁCH CÁC CHỮ VIẾT TẮT, CHỮ TIẾNG ANH
 Các chữ viết tắt:
• AJAX (Asynchronous JavaScript And XML): Công nghệ tải một phần
nội dung website.
• API (Application Programming Interface): Giao diện lập trình ứng dung.
• CMS (Content Management System): Hệ thống quản lý nội dung.
• CSS (Cascading Style Sheet): Ngôn ngữ trang trí website.
• DOM (Document Object Model): Là một mô hình cho phép truy xuất
đến các thành phần của một tài liệu có cấu trúc.
• HTML (Hyper Text Markup Language): Ngôn ngữ đánh dấu siêu văn
bản.

• JSON (JavaScript Object Notation)Là cú pháp để lưu trữ và trao đổi
thông tin văn bản.
• LDAP (Lightweight Directory Access Protocol): Giao thức ứng dụng
truy cập các cấu trúc thư mục.
• MVC (Model View Controller): Phương pháp chia nhỏ một ứng dụng
thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác
nhau và ảnh hưởng lẫn nhau.
• OOP (Object Oriented Programming): Lập trình hướng đối tượng.
• PDF (Portable Document Format): Là một loại định dạng tài liệu văn
bản di dộng.
• PHP (Hypertext Preprocessor): Một ngôn ngữ lập trình website phổ
biến.
• RSS (Really Simple Syndication): Một định dạng tập tin thuộc họ XML
dùng trong việc chia sẻ tin tức website.
• SQL (Structured Query Language): Ngôn ngữ truy vấn cấu trúc cơ sở dữ
liệu.
ix
• TCP/IP (Transmission Control Protocol/Internet Protocol): Tập hợp các
giao thức hỗ trợ việc lưu truyền trên mạng.
• URL (Uniform Resource Locator): Địa chỉ liên kết trỏ đến đích của một
website.
 Các chữ tiếng Anh:
• Album: Bộ sưu tập, tập ảnh, tập nhạc, …
• Banner: Bảng giới thiệu ở vị trí đầu trang web.
• Captcha: Nhập văn bản như trong hình hiển thị để xác nhận.
• Footer: Phần dưới cùng của trang web.
• Menu: Thực đơn tùy chọn.
• Request: Yêu cầu.
• Username: Tên đăng nhập.
• Zoom: Phóng to, thu nhỏ một nội dung.

x
MỞ ĐẦU
Khi công nghệ thông tin ra đời, con người có thể tiếp cận mọi thứ ở hầu hết
mọi nơi trên thế giới một cách dễ dàng. Trong đó, website là một thành tựu nổi bật
góp phần không nhỏ cho bước ngoặc này. Tuy nhiên, nhu cầu của con người không
ngừng tăng lên, chúng ta luôn cần những điều mới mẻ, từ thực tế đó yêu cầu các
công ty thiết kế web không dừng lại ở việc lập trình web bằng PHP tuần tự hay lập
trình hướng đối tượng, mà còn phải biết ứng dụng các công nghệ Framework hiện
đại, trong đó Zend Framework là một framework phổ biến được nhiều người dùng
nhất do là một PHP Framework được chính công ty phát triển ngôn ngữ PHP phát
triển. Chúng tôi chọn đồ án này, bên cạnh việc được trực tiếp trải nghiệm quá trình
thiết kế web thì chúng tôi còn muốn nhiều người nhận thấy được những nét đẹp và
những điều tốt đẹp mà Phật Giáo mang lại cho cuộc sống, đồng thời chúng tôi cũng
muốn thay mặt đảo Phú Quý-tỉnh Bình Thuận gửi một thông điệp đến khách du
lịch: Phú Quý- một hòn đảo tuyệt đẹp và nhiều bí ẩn đang chờ du khách đến khám
phá.
Khóa luận không chỉ xoay quanh việc nghiên cứu một công nghệ duy nhất là
Zend Freamework, mà còn kết hợp thêm nhiều công nghệ hiện đại khác như: CSS3,
nhúng các CMS và các thư viện mã nguồn AJAX, JQuerry,… vào website để mang
đến cho website những diện mạo mới, nhiều tính năng mới hiện đại hơn và từ đó sẽ
thu hút nhiều người xem hơn.
xi
CHƯƠNG 1: TỔNG QUAN
1.1. Giới thiệu
Hiện nay, thiết kế website đã trở nên khá phổ biến rộng rãi ở mọi nơi trên thế
giới, nên việc áp dụng các công nghệ mới là điều tất yếu cần phải có. Nhu cầu thiết
kế web trên các framework với các thư viện được lập trình sẵn ngày càng cao do
tính tiêu chuẩn hóa mã nguồn, tính thuận tiện và nhanh chóng,… Zend Framework
là một ví dụ điển hình, nó được chính công ty phát triển ngôn ngữ PHP
(www.zend.com) phát triển với kho thư viện hỗ trợ ngày càng đầy đủ và phong phú

luôn được cập nhật liên tục. Hầu hết các nhà nghiên cứu và lập trình web đều biết
đến Zend Framework vì nó khá phổ biến. Do Zend Framework là một dạng mã
nguồn mở, nên thư viện của Zend Framework không chỉ được phát triển bởi các kỹ
sư lập trình web chuyên môn, mà còn được cộng đồng mạng đóng góp phát triển,
nên Zend không ngừng phát triển và hoàn thiện.
Tuy nhiên, do thư viện hỗ trợ khổng lồ, nên việc tìm hiểu và thích nghi với
Zend Framework là một điều khó khăn và tốn thời gian. Vì thế, chúng tôi thực hiện
khóa luận này nhằm trình bày các vấn đề cơ bản về Zend Framework, sau đó là các
phần mở rộng về Zend Framework cũng như các vấn đề khác liên quan đến lập trình
thiết kế website. Bên cạnh đó còn tạo một website thực tế cho chùa Thạnh Lâm để
ứng dụng công nghệ Zend Framework.
1.2. Mục tiêu
Khi tìm hiểu và ứng dụng Zend Framework, bên cạnh nắm vững phương
thức lập trình theo hướng đối tượng, chúng ta còn có thể biết được cách thức hoạt
động của mô hình chuẩn MVC (Model-View-Controller) và sự thuận lợi mà các lớp
trong thư viện Zend Framework hỗ trợ như việc tạo form, kiểm tra và sàn lọc dữ
liệu đầu vào, chứng thực và phân quyền người dùng, tích hợp các ứng dụng và dịch
vụ của các hãng thứ ba vào trong dự án,
Dựa vào lý thuyết đã tìm hiểu để ứng dụng vào xây dựng website chùa
Thạnh Lâm. Khi xây dựng website, chúng ta sẽ biết được cách thức hoạt động và
quản lý thực tế cụ thể từ phía nhà chùa, cũng như nhu cầu từ phía người dùng. Từ
1
đó rút ra kinh nghiệm thực tế cho công việc lập trình thiết kế website sau này. Đồng
thời giới thiệu nét đẹp văn hóa Phật Giáo đến cho mọi người, nhằm đem lại cuộc
sống an lành hạnh phúc. Qua đó, hình ảnh đảo Phú Quý-tỉnh Bình Thuận cũng được
quảng bá rộng rãi – một danh lam thắng cảnh đẹp của miền nam Việt Nam.
1.3. Phạm vi đề tài
Đề tài khóa luận không chỉ xoay quanh việc nghiên cứu một công nghệ duy
nhất là Zend Freamework, mà còn kết hợp thêm nhiều công nghệ hiện đại khác liên
quan đến việc lập trình và thiết kế website như: công nghệ thiết kế CSS3 mới,

nhúng các CMS và các thư viện mã nguồn AJAX, JQuerry, … vào website để mang
đến cho website những diện mạo mới, nhiều tính năng mới hiện đại hơn và từ đó sẽ
thu hút nhiều người xem hơn.
Áp dụng các lý thuyết đã nghiên cứu trong khóa luận để tạo một trang web
hoạt động thực tiễn cho chùa Thạnh Lâm. Để thực hiện được điều đó, chúng tôi
phải tham khảo mô hình hoạt động, quản lý của các trang web nói chung và website
chùa nói riêng. Nắm bắt được nhu cầu thực tế của người dùng để lập trình và thiết
kế trang web một cách hợp lý, tối ưu.
1.4. Bố cục báo cáo
Khóa luận tập trung nghiên cứu các vấn đề sau:
 Tìm hiểu công nghệ Zend Framework
• Giới thiệu về Zend Framework.
• Mô hình MVC (Model-View-Controller) trong Zend Framework.
• Các lớp cơ bản trong thư viện Zend Framework.
• Ưu điểm và khuyết điểm của Zend Framework.
 Lập trình thiết kế website chùa Thạnh Lâm
• Khảo sát và phân tích hiện trạng thực tế.
• Phân tích và thiết kế cơ sở dữ liệu cho website.
• Ứng dụng Zend Framework và các công nghệ khác vào thiết kế và
lập trình web cho chùa Thạnh Lâm.
• Hướng phát triển trong tương lai.
2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. Cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do 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. Vì
MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, 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 rất
mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có
truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên có thể tải về

MySQL từ trang chủ. Nó 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,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu
quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó
làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
2.2. Ngôn ngữ đánh dấu siêu văn bản - HTML
HTML là dạng viết tắt của Hyper Text Markup Language (ngôn ngữ đánh
dấu siêu văn bản) được biết đến là một loại ngôn ngữ dùng để mô tả hiển thị các
trang web. Nhiều người nhầm tưởng HTML là ngôn ngữ lập trình nhưng sự thực
không phải như vậy, nó là một ngôn ngữ đánh dấu. Một ngôn ngữ đánh dấu là một
bộ các thẻ đánh dấu.
Lịch sử phát triển của HTML:
• 1991: HTML
• 1994: HTML2
• 1-1997: HTML3
• 12-1997: HTML4
• 2000: XHTML1
• 2009: HTML5
3
2.3. Cascading Style Sheet – CSS
Cascading Style Sheets, hay còn gọi tắt là CSS, là những tập tin hỗ trợ cho
trình duyệt web trong việc hiển thị một trang HTML. Về cơ bản, các trang HTML
như bộ xương - khuôn khổ cơ bản của một trang web, trong khi các file CSS sẽ cụ
thể hóa các thành phần của một trang nên được hiển thị như thế nào. CSS cho phép
kiểm soát phông chữ, màu chữ, kiểu nền của một trang HTML.
CSS đã giúp cho việc thay đổi phong cách của một trang web đơn giản hơn
và đỡ tốn thời gian hơn, có thể thực hiện sự thay đổi trên một mục nào đó và sau đó
áp dụng sự thay đổi này trên toàn bộ trang web thay vì phải thực hiện trên từng mục

riêng lẻ như trước đây.
Thế mạnh của CSS:
• Tách riêng phần định dạng ra khỏi nội dung trang web.
• CSS giúp người thiết kế kiểm soát toàn bộ giao diện trang web một
cách nhanh nhất và hiệu quả nhất nên người thiết kế sẽ tiết kiệm được
nhiều công sức.
• Do được tách rời khỏi nội dung của trang web, nên các mã HTML sẽ
gọn gàng hơn, giúp người thiết kế thuận tiện hơn trong việc chỉnh sửa
giao diện. Kích thước của file .html cũng được giảm đáng kể. Hơn thế
nữa sẽ được trình duyệt tải một lần và dùng nhiều lần (cache), do đó
giúp trang web được load nhanh hơn.
Lịch sử phát triển của CSS:
• 1996: CSS1
• 1998: CSS2
• 1999: CSS3
2.4. Ngôn ngữ lập trình PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập
trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng
viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với
web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng
4
dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây
dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh
chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Lịch sử phát triển của PHP:
• 1997: PHP/FI
• 1998: PHP 3
• 2000: PHP 4
• 2004: PHP 5
• Đang phát triển PHP 6

2.5. Lập trình hướng đối tượng
Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ object-oriented
programming), hay còn gọi là lập trình định hướng đối tượng, là kĩ thuật lập trình
hỗ trợ công nghệ đối tượng. OOP được xem là giúp tăng năng suất, đơn giản hóa độ
phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên
tập trung vào các đối tượng phần mềm ở bậc cao hơn. Ngoài ra, nhiều người còn
cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các
phương pháp trước đó.
Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các
thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các yếu tố
bên ngoài có thể tương tác với các chương trình đó giống như là tương tác với các
đối tượng vật lý.
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu
mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có một tên
riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó.
Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữ liệu (bên
trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môi trường.
Các tính chất cơ bản:
• Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ
qua hay không chú ý đến một số khía cạnh của thông tin mà nó đang
5
trực tiếp làm việc lên, nghĩa là nó có khả năng tập trung vào những
cốt lõi cần thiết. Mỗi đối tượng phục vụ như là một "động tử" có thể
hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái
của nó và liên lạc với các đối tượng khác mà không cần cho biết làm
cách nào đối tượng tiến hành được các thao tác. Tính chất này thường
được gọi là sự trừu tượng của dữ liệu.
Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể
có một số đặc điểm chung cho nhiều đối tượng khác như là sự mở
rộng của nó nhưng bản thân đối tượng ban đầu này có thể không có

các biện pháp thi hành. Tính trừu tượng này thường được xác định
trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng.
• Tính đóng gói (encapsulation) và che giấu thông tin (information
hiding): Tính chất này không cho phép người sử dụng các đối tượng
thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức
nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho
phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một
đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã.
Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.
• Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông
điệp (message). Việc gửi các thông điệp này có thể so sánh như việc
gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả
lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được
gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định nghĩa
một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một
loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên
gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng
theo đặc tính của từng đối tượng mà không bị nhầm lẫn.
Thí dụ khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì
có một phương thức chung là "chu_vi". Khi gọi phương thức này thì
6
nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi
đối tượng là "hinh_tron".
• Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có
thể có sẵn các đặc tính mà đối tượng khác đã có thông qua kế thừa.
Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn
có mà không phải tiến hành định nghĩa lại. Tuy nhiên, không phải
ngôn ngữ định hướng đối tượng nào cũng có tính chất này.
2.6. Zend Framework
2.6.1. Giới thiệu

Năm 2005, Andi Gutmans của Zend Technologies đã công bố Zend’s PHP
Collaboration Project và giới thiệu Zend Framework. Phiên bản 1.0 được phát hành
vào 7/2007 và các phiên bản mới được ra đời thường xuyên sau đó. Phiên bản mới
nhất hiện nay là Zend Framework 2.0.
Zend Framework là một framework mã nguồn mở nhằm phát triển các ứng dụng
và dịch vụ web trên nền ngôn ngữ lập trình PHP. Zend Framework là một PHP
Framework được chính công ty phát triển ngôn ngữ PHP phát triển.Vì vậy sẽ không
có lý do nào mà Zend Framework sẽ bị biến mất trong tương lai trừ khi PHP không
tồn tại nữa. 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.
Zend Framework được triển khai bằng 100% mã hướng đối tượng nên có thể dễ
dàng thừa kế, nâng cấp các ứng dụng. Zend Framework cung cấp một mô hình
MVC mạnh mẽ với hiệu suất cao. Cơ cấu thành phần của Zend Framework là đơn
nhất, mỗi thành phần được thiết kế ít phụ thuộc vào các thành phần khác. Kiến trúc
này cho phép các nhà phát triển dễ sử dụng các thành phần riêng lẻ. Zend sử dụng
những kiểu mẫu thiết kế (design pattern) hiện đại, hỗ trợ tối đa tính linh hoạt, khi
nghiên cứu và làm việc trên Zend Framework ta thu được rất nhiều kiến thức mới.
Thư viện Zend rất đầy đủ, phong phú và chúng ta có thể tự phát triển thêm.
7
2.6.2. Mô hình MVC trong Zend Framework
MVC (Model View Controller) là tên một phương pháp chia nhỏ một ứng
dụng thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và
ảnh hưởng lẫn nhau, đó là models, views, và controllers. Mô hình MVC phát triển
nhằm mục tiêu giảm thiểu độ phức tạp của phần mềm, thuận tiện cho việc phát
triển, nâng cấp, phân rã các thành phần (module) đễ dễ dàng thay thế, thêm hoặc
sửa chữa các thành phần này.
Các thành phần trong mô hình MVC:
Trong kiến trúc này, hệ thống được chia thành 3 tầng tương ứng đúng với tên
gọi của nó (Model – View – Controller). Ở đó nhiệm vụ cụ thể của các tầng được
phân chia như sau:

Hình 2. 1: Mô hình kiến trúc MVC
• Controller (Tầng điều khiển): Là phần điều khiển của ứng dụng, điều hướng
các nhiệm vụ (task) đến đúng phương thức (method) có chức năng xử lý
nhiệm vụ đó. Nó chịu trách nhiệm xử lý các tác động về mặt giao diện, các
thao tác đối với models, và cuối cùng là chọn một hiển thị (view) thích hợp
để hiển thị ra màn hình.
8
• Model (Tầng dữ liệu): Là một đối tượng hoặc một tập hợp các đối tượng biểu
diễn cho phần dữ liệu của chương trình. Nó đượ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 ở 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.
• View (Tầng giao diện): Là phần giao diện với người dùng, bao gồm việc
hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn
lựa…, để người dùng có thể thêm, xóa. sửa, tìm kiếm và làm các thao tác
khác đối với dữ liệu trong hệ thống. Thông thường, các thông tin cần hiển thị
được lấy từ thành phần models.
Hình 2. 2: Mô hình MVC trong Zend Framework
Tóm lại, chu trình hoạt động tổng quát của mô hình MVC như sau: Controller
tiếp nhận yêu cầu từ phía người dùng, sau đó phân tích các yêu cầu đó để lấy dữ
liệu từ các Model, dữ liệu được trả về Controller để chuyển tới phần View để hiển
thị hồi đáp cho yêu cầu của người dùng.
2.6.3. Cơ bản về các thành phần trong Zend Framework
Có thể chia các thành phần trong Zend Framework thành 6 nhóm chính:
 Thành phần MVC: cung cấp đầy đủ các tính năng để xây dựng ứng dụng
theo mô hình MVC, tách phần hiển thị ra khỏi phần xử lý. Bao gồm các lớp
sau:
9
• Zend_Application, Zend_Application_Bootstrap,

Zend_Application_Resource, Zend_Application_Modules, …
• Zend_Controller_Front, Zend_Controller_Action,
Zend_Controller_Dispatch, Zend_Controller_Plugin,
Zend_Controller_Router, …
• Zend_Layout, Zend_View, Zend_View_Helper, …
 Thành phần xác nhận và truy cập: hỗ trợ người xây dựng web đảm bảo tính
an toàn, bảo mật, quản lý và phân quyền cho người dùng một cách nhanh
chóng và đơn giản. Bao gồm các lớp sau:
• Zend_Acl
• Zend_Auth
• Zend_Session, …
 Thành phần quốc tế hóa: Zend Framework cho phép ta xây dựng ứng dụng
bằng nhiều ngôn ngữ, địa phương hóa ứng dụng với người dùng ở từng khu
vực như ngày, giờ, đơn vị tính, tiền tệ, ngôn ngữ,… Bao gồm các lớp sau:
• Zend_Date
• Zend_Currency
• Zend_Local
• Zend_Translate
 Thành phần giao tiếp tương tác: Zend Framework có thể đọc dữ liệu từ các
trang web khác. Bao gồm các lớp sau:
• Zend_Http_Client
• Zend_XmlRpc_Client
 Thành phần dịch vụ web: Dùng để sử dụng các dịch vụ của các hãng khác
như: StrikeIron, Microsoft, Yahoo, Amazon,…
• Zend_Service
• Zend_Service_Amazon
• Zend_Service_Yahoo, …
10
 Thành phần cốt lỗi: giúp tăng tốc website một cách đáng kể
• Zend_Cache

• Zend_Db
• Zend_Search_Lucene
2.6.4. Các lớp cơ bản trong thư viện Zend Framework
2.6.4.1. Zend_Controller
Controller có nhiệm vụ nhận các yêu cầu từ người dùng, điều hướng theo các
yêu cầu đó để gọi các phương thức của các lớp trong model, sau khi nhận dữ liệu trả
về, nó sẽ chuyển các dữ liệu ra view để hiển thị ra màn hình.
Các controller sẽ nằm trong thư mục controllers, controller mặc định khi vào
một trang web là IndexController
Tên tập tin controller được quy ước đặt tên như sau:
Chữ cái đầu tiên viết hoa + Controller.php
Ví dụ: ta có thành viên là một controller thì có tên file như sau:
ThanhvienController.php
Mỗi controller là một lớp, tên lớp là tên controller và lớp này phải kế thừa lớp
Zend_Controller_Action, mỗi lớp có các Action là các hàm, trong đó có một hàm
đặc biệt là hàm init() được tự động gọi khi ta gọi một Action trong controller.
Action mặc định khi gọi một controller là indexAction().
Tên action được quy ước đặt tên như sau:
Tên action viết thường + Action()
Ví dụ:
class ThanhvienController extends Zend_Controller_Action {
public function init() {

}
public function indexAction () {

}
11
}
Với mỗi controller chúng ta phải tạo một thư mục trong thư mục views,

trong các thư mục của controller vừa tạo chứa các tệp *.phtml tương ứng với tên
của các action.
2.6.4.2. Zend_View
Ứng với mỗi controller chúng ta phải tạo một thư mục trong thư mục views,
trong các thư mục của controller vừa tạo chứa các tệp *.phtml tương ứng với tên
của các action.
Ví dụ: views/scripts/thanhvien/index.phtml
Khi một action của controller được gọi, Zend sẽ vào thư mục mang tên
controller trong thư mục views và gọi tệp *.phtml mang tên action được gọi. Tại
đây các dữ liệu truyền qua từ action sẽ được hiển thị ra màn hình qua tệp *.phtml.
Cách thức truyền biến:
Trong action của controller Tại view tương ứng với action đó
$this->view->ten_bien = "giá trị"; echo $this->ten_bien;
$arr = array(
"chiSo1"=>"giá trị 1",
"chiSo2"=>" giá trị 2"
);
$this->view->ten_bien_mang =
$arr;
foreach($this->ten_bien_mang as $giaTri)
echo $giaTri;
foreach($this->ten_bien_mang as $chiSo =>
$giaTri)
echo "[$chiSo] - $giaTri <br>";
Bảng 2. 1: Bảng cách thức truyền biến trong Zend Framework
Để gọi các tệp *.css và *.js, ta thêm các dòng lệnh sau trong hàm init():
• Tệp *.css đầu tiên:
$this->view->headLink()->appendStylesheet("đường dẫn đến tệp css");
• Tệp *.css tiếp theo:
$this->view->headLink()->offsetSetStylesheet("2", " đường dẫn đến tệp css ");

Cứ thế ta tăng chỉ số ở trước đường dẫn đến tệp css ở các tệp sau
12
• Tệp *.js đầu tiên:
$this->view->headScript()->appendFile("đường dẫn đến tệp js");
• Tệp *.js tiếp theo:
$this->view->headScript()->offsetSetFile("2", " đường dẫn đến tệp js ");
Cứ thế ta tăng chỉ số ở trước đường dẫn đến tệp js ở các tệp sau
• Chèn các thẻ Meta:
$this->view->headMeta()->appendHttpEquiv('Content-Type','text/html;
charset=UTF-8');
Tại tệp view *.phtml của các action ta viết như sau:
<?php echo $this->doctype(); ?>
<html>
<head>
<?php
echo $this->headTitle("Testing Title");
echo $this->headLink();
echo $this->headScript();
echo $this->headMeta();
?>
</head>
<body>

</body>
</html>
Như vậy là các tệp *.css và *.js đã được gọi.
2.6.4.3. Zend_Layout
Đối với một trang web động, thì các dữ liệu hiển thị sẽ được thay đổi tùy vào
ngữ cảnh người dùng muốn xem, nhưng có một số hiển thị vẫn không thay đổi như:
menu, banner, footer, …Để làm được điều đó, ta phải dùng Zend_Layout. Cách

thực hiện như sau:
13

×