Mục Lục Phần 1: Giới thiệu về công nghệ Zend Frameword 3 1.1 Giới thiệu công nghệ Zend Frameword 3 1.2 Mô hình MVC trong Zend framwork 5 1.3 Luồng xử lý trong Zend framework 6 Phần 2: Giới thiệu bài toán 9 2.1 Giới thiệu 9 2.2 Giới thiệu sơ lược về hệ thống 9 2.3 Phân công công việc 9 Phần 3: Phân tích yêu cầu bài toán 11 3.1 Biểu đồ ca sử dụng 11 3.2 Biểu đồ trình tự 11 Phần 4: Thiết kế hệ thống Cơ sở dữ liệu 14 Phần 5: Kết luận và đánh giá 18 Tài liệu tham khảo 19 Phần 1: Giới thiệu về công nghệ Zend Frameword 1.1 Giới thiêu về công nghệ Zend Frameword a . Zend Framwork là gì? Zend Framework là sản phẩm framework mã nguồn mở được phát triển trên nền tảng PHP 5.0 theo mô hình hướng đối tượng. Zend Framwork là framework theo mô hình MVC. Zend Framwork có hỗ trợ làm việc với Template engine kết hợp cùng tầng View. b. Zend Framwork làm được những gì? 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 phần thư viên hỗ trợ API của các nhà cung cấp như Google, Yahoo, … 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, sử dụng Plugins. c. Ưu khuyết điểm của Zend Framework: Zend Framework là một PHP framework ra đời khá trễ, tiếp thu được những tinh hoa và khắc phục những sai lầm mà các framewok trước mắc phải. • Ưu điểm: Zend Framework được viết theo kiểu hướng đối tượng nên nó thừa hưởng các thế mạnh của kiểu thiết kế này. Các lớp của Zend Framework được BA (Business Analysis) rất chuẩn và khi cần mở rộng bạn costheer dùng tính chất thừa kế của OOP, không cần thiết phải chỉnh sửa core của framework. Các version của Zend Framework không có nhiều thay đổi trong core nên có thể dễ dàng update. Zend Framework tích hợp gần như tất cả các thư viện PHP và CMS khác để sử dụng. Ví dụ: Smarty, Pear, Drupal, … Cách viết của Zend Framework rất thân thiện và đơn giản, tích hợp những công nghệ mới nhất của lập trình web: JSON, Search, Syndication, Web Services, … Thường được sử dụng trong các dự án lớn và có kế hoạc phát triển dài lâu. • Khuyết điểm:
Trang 1Đại Học Bách Khoa Hà Nội Viện Công Nghệ Thông Tin và Truyền Thông
BÁO CÁO
Môn: PROJECT 2 -K54
Đề tài : Xây dựng trang web bộ môn
Hệ Thống Thông Tin dựa trên nền Zend frameword
Giáo viên hướng dẫn:ThS Phạm Thị Hương GiangSinh viên thực hiện :Phạm Thanh HoàngSHSV:Nguyễn Việt
HiếuSHSV: 20091046
Hà Nội – 05/2012
Trang 2Mục Lục
Phần 1: Giới thiệu về công nghệ Zend Frameword
3
1.1 Giới thiệu công nghệ Zend Frameword
3 1.2 Mô hình MVC trong Zend framwork
5
Phần 1: Giới thiệu về công nghệ Zend Frameword
*****
Trang 31.1 Giới thiêu về công nghệ Zend Frameword
a Zend Framwork là gì?
- Zend Framework là sản phẩm framework mã nguồn mở được phát triển trên nền tảng PHP 5.0 theo mô hình hướng đối tượng
- Zend Framwork là framework theo mô hình MVC
- Zend Framwork có hỗ trợ làm việc với Template engine kết hợp cùng tầng View
b Zend Framwork làm được những gì?
- 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 phần thư viên hỗ trợ API của các nhà cung cấp như Google, Yahoo, …
- 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, sử dụng Plugins
c Ưu khuyết điểm của Zend Framework:
Zend Framework là một PHP framework ra đời khá trễ, tiếp thu được những tinh hoa và khắc phục những sai lầm mà các framewok trước mắc phải
Ưu điểm:
- Zend Framework được viết theo kiểu hướng đối tượng nên nó thừa hưởng các thế mạnh của kiểu thiết kế này Các lớp của Zend Framework được BA (Business Analysis) rất chuẩn và khi cần mở rộng bạn costheer dùng tính chất thừa kế của OOP, không cần thiết phải chỉnh sửa core của framework
- Các version của Zend Framework không có nhiều thay đổi trong core nên có thể dễ dàng update
- Zend Framework tích hợp gần như tất cả các thư viện PHP và CMS khác để sử dụng Ví dụ: Smarty, Pear, Drupal, …
- Cách viết của Zend Framework rất thân thiện và đơn giản, tích hợp những công nghệ mới nhất của lập trình web: JSON, Search, Syndication, Web Services, …
Trang 4Thường được sử dụng trong các dự án lớn và có kế hoạc phát triển dài lâu
Khuyết điểm:
- Mất nhiều thời gian để tìm hiểu về thư viện của Zend FrameWork
- Một số lớp chưa ổn định, có sự thy đổi, gây khó khăn cho người
sử dụng khi cập nhật các phiên bản
d Sơ qua về các thành phần trong Zend Framwork:
Zend_Acl: giúp chúng ta phân quyền cho ứng dụng chi tiết trên từng
action, controller và Module
Zend_Auth: cung cấp một API cho việc chứng thực tài khoản khi
đăng nhập vào hệ thống
Zend_Cache: giúp cho các ứng dụng không phải sử dụng CPU hoặc
truy xuất vào database quá nhiều
Zend_Controller: giúp lấy các request từ phía Client và thực thi nó
bằng các Action
Zend_Currency: xử lý tất cả các vấn đề liên quan đến tiền tệ
Zend_Date: xử lý tất cả các vấn đề liên quan thời gian
Zend_Db: Dựa trên đối tuợng PDO (PHP Data Objects), cung cấp
cách thức giao tiếp với database
Zend_Feed: xử lý với RSS và Atom feeds.
Zend_File: cung cấp, hỗ trợ mở rộng việc upload và download của
các tập tin Nó gắn liền với kiểm tra các chức năng của tập tin
Zend_Filters: lọc dữ liệu trước khi thực hiện một quá trình xử lý nào
đó
Zend_Form: đơn giản hóa việc tạo form và xử lý các ứng dụng trên
website
Zend_Local: là một thư viện trả lời cho câu hỏi làm sao ứng dụng có
thể sử dụng trên toàn thế giới
Zend_Search: là một lớp cung cấp cho chúng ta các phương thức
search trên nội dung của các tập tin lưu trữ thông tin
Zend_Translate: là giải pháp cho các ứng dụng đa ngôn ngữ.
Zend_Validate: dùng để kiểm tra dữ liệu nhập vào có phù hợp với
yêu cầu hay không
Trang 5 Zend_View: chính là tầng View trong mô hình MVC, giúp chúng ta
hiển thị những kết quả trong xử lý Controller và Models ra bên ngoài
2.Mô hình MVC trong Zend Framwork:
Bất cứ một ứng dụng nào được xây dựng theo mô hình MVC thì cũng đều phải tuân thủ những nguyên tắc mà mô hình MVC mang lại:
Model:
Thành phần model được chúng ta xây dựng thành các lớp kế thừa từ lớp Zend_Db_Table hoặc Zend_Db_table_Abstract được đặt trong thư mục application/models của ứng dụng 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
View
Thành phần của view được đặt trong thư mục application/views Trong thư mục views có 3 thành phần :
o Scripts : Chứa các thư mục gồm các file ánh xạ đến các controller/action để hiển thị trang giao diện tương ứng
o Helpers : Trong thư mục này chứa các lớp mà chúng ta 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 để giúp chúng ta dễ dàng gọi đến hàm được xây dựng trong lớp này mà không cần phải khai báo trước vì nó được xem là một thành phần trong thư viện của Zend
Trang 6o Filers : Tương tự như helpers, thành phần filters chứa các lớp giúp cho chúng ta có thể thay đổi hoặc xóa những dữ liệu không mong muốn trong quá trình nhập liệu thông qua bộ lọc này
Controller
Controller có nhiệm vụ điều hành trang web của bạn Một trang web
có thể có nhiều module, một module có thể có nhiều controller, một
Zend Framework sử dụng đối tượng Front Controller để quản lý các Request được gửi tới 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
index.php index.php là một file rất quan trọng trong website,nó có
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
bootstrap.php : bootstrap.php có nhiệm vụ khởi tạo các đối tượng
toàn cục sử dụng cho website, Bẫy lỗi của ứng dụng và đưa về cho errorController xử lý
Khi có một request từ người dùng Controller sẽ tiếp nhận request, phân tích request, sau đó sẽ phân luồng request để gọi đến Model và View tùy vào request mà người dùng đã gửi Khi người dùng gửi một request từ browser thì nơi đầu tiên tiếp nhận request đó đầu tiên là controller Tùy vào request, mà controller sẽ phân luồng đến model và view
3 Luồng xử lý công việc trong Zend Framework:
Trang 7o Bước 1: Một yêu cầu được tạo ra và đối tượng Request Object
được tạo ra
o Bước 2: routeStartup được nạp.
o Bước 3: Router xử lý yêu cầu.
o Bước 4: routerShutdown được nạp.
o Bước 5: dispatchLoopStartup được nạp.
o Bước 6: Qui trình gửi thông tin được bắt đầu.
o Bước 7: preDispatch được nạp.
o Bước 8: Dispathcher gọi Action Controller.
o Bước 9: Action Controller tạo Response Object.
o Bước 10: postDispatch được nạp.
o Bước 11: Nếu có Action nào được gọi thì quay lại bước 7.
o Bước 12: dispatchLoopShutdown được nạp
o Bước 13: Response được gửi lại.
Trang 84 Cấu trúc thư mục của một Project trong Zend Framework (một module):
Câu trúc thư mục Diễn giải
/aplication Thư mục chứa các thành phần của mô hình MVC
/configs Thư mục chứa các tập tin cấu hình *.ini, *.xml
applications Tập tin cấu hình
/controllers Thư mục chứa các tập tin điều hướng hành động
IndexContro
ller.php
Controller mặc định kế thừa lớp Zend_Controller_Action mỗi tập tin controller sẽ có một phương thức mặc định là indexAction
/forms Thư mục chứa các lớp được tạo bởi Zend_Forms hoặc
các lớp validate form
/models Thư mục chứa các lớp tương tác trực tiếp với database /views Phụ thuộc thư mục /controllers
/filters Chứa các lớp lọc dữ liệu đầu vào, đầu ra
/helpers Chứa các hỗ trợ
/scripts Chứa view của các action trong controller
/index Tương ứng tập tin IndexController.php
/i
ndex.php
Tương ứng phương thức indexAction trong lớp InderController.php
/layouts Thư mục chứa các bố cục,giao diện của ứng dụng
Bootstrap.php Tập tin khởi tạo tài nguyên, nạp sẵn các phương thức
Trang 9/library Thư mục chứa các thư viện ứng dụng.
/Zend Thư viện của Zend
/Zendvn Thư viện mở rộng Zendvn
/public Thư mục chứa các thành phần khác(dùng chung) /css Thư mục chứa các tập tin CSS
/images Thư mục chứa các tập tin hình ảnh
/js Thư mục chứa các tập tin Javascript
index.php Tập tin chạy chính của ứng dụng
define.php Tập tin định nghĩa hằng số
Phần 2 : Giới thiệu bài toán
2.1 Giới thiệu bài toán
-Quản lý danh sách các giảng viên trong một bộ môn thật khó,việc các giảng viên làm sao có thể quản lý các bài giảng, các học phần mà mình đảm nhiệm
-Trong khuôn khổ môn project 2 nhóm chúng em vận dung kiến thức
đã học được để xây dựng một web site quản lý bộ môn hệ thống thông tin dựa trên nền tảng công nghệ Zend Frameword mà bọn em nghiên cứu được.
2.2 Giới thiệu sơ lược về hệ thống
Các chức năng của hệ thống:
-Quản lý phần tin tức và thông báo chung của bộ môn
-Quản lý danh sách cán bộ giảng viên bộ môn hệ thống thông tin trường Đại Học Bách Khoa Hà Nội
-Các giảng viên có thể đăng nhập,them sửa xóa phần thông tin cá nhân của mình,có thể update và download bài giảng của mình
-Quản lý danh sách các cựu sinh viên tham gia đồ án tốt nghiệp
-Phần tìm kiếm có thể tìm các đề tài nghiên cứu, các slide bài giảng của các giảng viên
2.3 Phân công công việc chung
Trang 10a Công việc chung
-Cùng nhau tìm hiểu về công nghệ PHP lạp trình web, mysql, apache, mô hình MVC và nền tảng Frameword của Zend
-Cùng phân tích yêu cầu của đề bài, phân tích các chức năng , phân tích cơ sở dữ liệu
b Công việc riêng
Nguyễn Việt Hiếu -Đảm nhiệm thiết kế giao diện của
trang web, sử dụng phần mềm photoshop vẽ phác thảo giao diện của trang web Sau đó chuyển file
photoshop sang html, dùng ngôn ngữ CSS và JQery để căn chỉnh giao diện trang web
-Cùng Phạm Thanh Hoàng sử dụng ngôn ngữ php và mysql thiết kế các Modul hoàn chỉnh
Phạm Thanh Hoàng Thiết kế cơ sở dữ liệu, thực hiện đưa
code theo đúng mô hình MVC và Zend framword
c Công việc từng tuần
Trang 11Tuần 4: Nhận đề tài và tìm hiểu đề tài
Tuần 5: Phân tích bài toán
Tuần 6:Giải quyết vấn đề lưu trữ bảng trong cơ sở dữ liệu
Tuần 7:Phân tích phác thảo cơ sở dữ liệu, Giải quyết vấn đề upload và download file
Tuần 8:Phân tích cơ sở dữ liệu hoàn chỉnh
Tuần 9: Thực hiện code giao diện, Tạo trang user hoàn chỉnh Thực hiện việc update và download file
Tuần 10:Tạo trang admin quản lý
Tuần 11:Test lỗi và kiểm tra lại sản phẩm
Tuần 12 :Chuẩn bị viết báo cáo và trình bày sản phẩn trước giảng viên hương dẫn
Phần 3 : Phân tích yêu cầu bài toán
*****
3.1 Biểu đồ ca sử dụng
Hệ thống gồm tác nhân chính: usre và admin Hệ thống cung cấp các chức năng : Người dùng (các giảng viên) có thể thêm sửa xóa edit lại phần thông tin cá nhân, các bài giảng ,
Trang 123.2 Biểu đồ trình tự
Biểu đồ trình tự cho admin:
Trang 13Biểu đồ trình tự cho User
Trang 15Phần 4: Thiết kế hệ thống
***
Biểu đồ csdl : Biểu đồ thực thể liên kết:
Trong đó
-Bảng groups : Dùng để phân quyền giữa admin và các giảng viên
-Bảng catalog_info : bảng lưu trữ loại thông tin
-Bảng information : bảng chứa thông tin
-Bảng subject :
-Bảng teacher : Chứa thông tin các giảng viên
Trang 16-Bảng student : Chứa thông tin các sinh viên
-Bảng stujects:
-Bảng url_lecture : Chứa đường dẫn các tài liệu download
-Bảng article:
Trang 17-Bảng teach_subj : Bảng liên kết giữa bảng teacher và bảng subject
-Bảng teach_subjs: Bảng liên kết giữa bảng teacher và bảng subjects
-Bảng teach_article : Bảng liên kết giữa bảng teacher và bảng article
-Bảng student_subj: Bảng liên kết giữa bảng student và bảng subject
Trang 19Phần 5: Kết luận và đánh giá
***
5.1 Ưu điểm
-Hệ thống đã đáp ứng đầy đủ các chức năng đã đề ra -Vận dụng được kiên thức về Zend Framword vào bài toán -Thiết kế đưa toàn bộ thông tin vào cơ sở sữ liệu
5.2 Nhược điểm
-Hệ thống còn ít chức năng do thời gian hạn chế
-Chưa tối ưu hóa hết phần cơ sở dữ liệu
Trang 20Tài liệu tham khảo
***
[1] Slide bài giảng “Phân tích và thiết kế hệ thống thông tin” – Nguyễn Hồng Phương, đại học Bách Khoa Hà Nội
[2] “Phát triển hệ thống hướng đối tượng với UML 2.0 và C++” – Nguyễn Văn Ba
[3] Giáo trình “Nhập môn UML” – Huỳnh Văn Đức, Đoàn Thiện Ngân