2.4.4.1 Giới thiệu simple Framework MVC
Mô hình MVC cho Simple framework MVC
Hình 2.7 : Mô hình MVC cho Simple framework MVC
Simple framework MVC là một PHP framework theo cấu trúc MVC được viết trên PHP4 và hỗ trợ cả PHP4 và PHP5 .Nó là một tập hợp các thư viện viết sẵn trên PHP giúp chúng ta phát triển web bằng PHP nhanh hơn là cách viết lắp ghép thông thường, các thư viện này giúp chúng ta thực hiện các tác vụ thông thường của một ứng dụng web như kết nối và thực hiện các công việc liên quan đến cơ sở dữ liệu, upload file, xử lý hình ảnh, phân trang, cookie, session, bảo mật … Đồng thời các thư viện này cũng giúp chúng ta tổ chức code tốt hơn với mô hình MVC.
Cơ bản về simple framework MVC, trong folder cse_wru application trong thư mục system ta chú ý đến :
• File .htaccess để thực hiện rewrite URL, thay đổi request về file index.php sẽ có tham số route trong query string sẽ chuyển hướng tất cả các yêu đến
thư mục css, images, js, upload…
• File Index.php đóng vai trò là bootstrapper cho ứng dụng, nó sẽ nhận yêu cầu và phân tích nội dung request để chuyển tới file php khác thực hiện xử lý thích hợp. Nó là nơi để cấu hình hoàn toàn trang web
• File Defile.php dùng để kết nối với cơ sở dữ liệu, kết nối các thư mục …
• Thư mục core là thư mục chứa các file cơ bản và tổng quát nhất :
− Ta chú ý đến file ConfigDb.php dùng để cấu hình thông tin liên quan đến cơ sở dữ liệu.Tại đây sẽ khai báo tất cả các bảng và các field ,khóa chính… trong cơ sở dữ liệu
− File Config.php để điều phối hay chỉ đường, nó dùng để cấu hình thông tin tên site.url.
− Ngoài ra trong thư mục này còn chứa các file như BaseLogic.php, BaseBlock.php, BaseDb.php… các file này gồm những hàm được viết tổng quát nhất.File BaseDb.php dùng để viết các hàm insert, update, delete và select tác động trực tiếp vào Database.
• Trong thư mục Action Nơi đặt các file thực hiện chức năng controller trong MVC ( điều hướng và xử lý yêu cầu ).
• Trong thư mục logic chứa các file thực hiện chức năng model trong MVC, cụ thể ở đây có thể là các file giúp bạn thao tác với cơ sở dữ liệu theo yêu cầu từ controller.
• Trong thư mục db sẽ truy xuất dữ liệu vào trong databse.
• Trong thư mục views chứa các file thực hiện tác vụ view trong mô hình MVC, cứ tạm xem nó là nơi chứa file giao diện cho ứng dụng. Tại file này nó sẽ hiển thị dữ liệu ra giao diện người dùng
• Ngoài ra còn có các thư mục khác như image, upload ,css, js…
Tóm lại, trong MVC controler là phần kết nối điều khiển truy suất giữu view và model. View để hiển thị định dạng ra browser còn Model đóng vai trò là người quản lý dữ liệu(truy suất hay cập nhật dữ liệu phải qua model).
2.4.4.2 Lợi ích khi sử dụng simple framework MVC
Việc phát triển sử dụng simple frameworks MVC cho nhiều lý do khác nhau, nhưng một số lý do cơ bản nhất và dễ hiểu nhất là tiết kiệm thời gian phát triển ứng dụng web PHP. Dùng lại mã qua các dự án tương tự sẽ tiết kiệm được rất nhiều các nhà phát triển một số lượng đáng kể về thời gian và nỗ lực trong dự án.simple Frameworks MVC cung cấp mô-đun trước được xây dựng để thực hiện nhiệm vụ tẻ nhạt mã hóa, do đó, các nhà phát triển có thể dành nhiều thời gian của họ vào việc phát triển các ứng dụng thực tế hơn là tái xây dựng nền tảng với nhau và mỗi dự án.
Khi làm việc trên một dự án có giới hạn về thời gian, sử dụng simple frameworks MVC có vẻ như là một giải pháp tối ưu nhất nhằm đẩy nhanh quá trình viết mã. Vì vậy, nếu bạn đang trong thời gian khủng hoảng và cấp bách nhất của dự án đòi hỏi gấp rút về thời gian, PHP frameworks lợi thế sẵn có bạn có thể sử dụng bất kỳ lúc nào bạn muốn. Một ví dụ khác, nên xem xét là khi bạn làm việc trên một dự án kiếm khá nhiều tiền… và giúp công việc trôi chảy kinh doanh phát đạt hơn.
Nói tóm lại, sự sẵn có của simple frameworks MVC một điều tuyệt vời. Bạn thậm chí có thể tạo riêng cho bạn, mặc dù các nhà phát triển nhiều bầu chọn từ bất frameworks nổi tiếng nhất do sự phổ biến của chúng, hỗ trợ rộng lớn, và các diễn đàn/cộng đồng cho phép bạn tương tác với các nhà phát triển khác, những người sử dụng cùng một frameworks. Lưu ý, bạn nên luôn luôn kiểm tra dự án đầu tiên của bạn để quyết định xem bạn có nên sử dụng một frameworks hay không. Một số câu hỏi bạn nên hỏi bản thân bạn là: nó sẽ giúp bạn tiết kiệm, và bất kỳ ai khác có thể sử dụng nó, thời gian và công sức? Ứng dụng sẽ hoạt động tốt hơn? Nó sẽ cải thiện sự ổn định? Nếu bạn có thể có câu trả lời bất kỳ câu hỏi nào, một simple frameworks MVC có thể là câu trả lời đúng cho rằng dự án cụ thể.
CHƯƠNG 3 :KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU HỆ THỐNG 3.1 KHẢO SÁT YÊU CẦU HỆ THỐNG
3.1.1 Xác định các yêu cầu của hệ thống
3.1.1.1 Đối với người duyệt web
Website đảm bảo các yêu cầu sau:
• Website cung cấp giao diện đồ họa trực quan cho người duyệt, có thể dễ dàng tra cứu, tìm kiếm thông tin một cách nhanh chóng.
• Website hiển thị các tin theo từng chuyên mục sản phẩm
3.1.1.2 Đối với người quản trị Admin
Để có thể thực hiện những tác vụ của người quản trị, hệ thống sẽ yêu cầu người quản lý đăng nhập vào hệ thống. Sau khi đăng nhập website cung cấp các chức năng:
• Kết nối cơ sở dữ liệu mới với cơ sở dữ liệu cũ của website trước
• Quản lý dữ liệu: tiến hành cập nhập, thêm mới hay xóa bỏ các dữ liệu không phù hợp.
• Quản lý sản phẩm: tiến hành cập nhâp,thêm mới,xóa bỏ các dữ liệu tin tức không phù hợp
• Quản lý chuyêm mục sản phẩm: có thể cập nhâp, thêm mới, xóa bỏ các dữ liệu không phù hợp
• Quản lý User: có thể cập nhập,thêm,xóa,phân quyền cho người sử dụng
• Chức năng tìm kiếm cho người quản trị
• Phân quyền sử dụng website
• Thay đổi mật khẩu khi cần thiết để đảm bảo tính bảo mật và an toàn cho Website.
3.1.2 Mô tả chi tiết chức năng với từng đối tượng sử dụng hệ thống
3.1.2.1 Đối với người duyệt web
Mục đích Chức năng cho phép người xem có thể xem sản phẩm Dữ liệu vào Lựa chọn sản phẩm muốn xem.
Xử lý Lấy mục tin từ Database.
Dữ liệu ra Hiển thị sản phẩm được yêu cầu.
3.1.2.2 Đối với người quản trị web
• Đăng nhập
Mục đích Cho Phân quyền để kiểm soát hệ thống một cách chặt chẽ, tránh
tình trạng hệ thống bị thay đổi và phá hủy.
Dữ liệu vào Tên đăng nhập, mật khẩu.
Xử lý So sánh với bảng user trong cơ sở dữ liệu .
Dữ liệu ra Chuyển đến trang của đối tượng nếu đúng, báo lỗi nếu sai tên hay
mật khẩu.
• Đăng xuất
Mục đích Cho người quản lý thoát khỏi hệ thống đang sử dụng
Dữ liệu vào Yêu cầu đăng xuất
Xử lý Thực hiện yêu cầu đăng xuất khỏi hệ thống
Dữ liệu ra Trở về trang giao diện người dùng
• Đổi mật khẩu
Mục đích Thay đổi mật khẩu truy nhập, để dảm bảo tính tiện lợi hay an toàn.
Dữ liệu vào Tên đăng nhập, mật khẩu cũ, mật khẩu mới.
Xử lý So sánh với bảng user trong cơ sở dữ liệu .
Dữ liệu ra Ghi nhận thông tin nếu đúng, cảnh báo trong trường hợp sai phạm.
• Quản lý người dùng
Mục đích Người quản trị có thể kiểm soát được người dùng, admin có thể phân quyền, thêm, sửa, xóa người dùng Dữ liệu vào Các thông tin của người dùng
Dữ liệu ra Hiển thị lên giao diện quản lý
• Quản lý sản phẩm
Mục đích
+ Người quản trị có thể kiểm soát được các sản phẩm. Có thể cho sản phẩm đó hiển thị lên web không, sản phẩm đó thuộc chuyên mục nào…
+Admin có thể tìm kiếm, xem, sửa xóa và cập nhật các chuyên mục sản phẩm
+Admin có thể xem chi tiết về từng sản phẩm tại trang quản lý
Dữ liệu vào
+Dữ liệu tìm kiếm
+ Dữ liệu thêm sản phẩm mới. +Dữ liệu về update sản phẩm mới +Dữ liệu về sản phẩm cần xóa
Xử lý Xử lý các yêu cầu truy xuất dữ liệu để chỉnh sửa sản phẩm và cập nhập dữ liệu khi thêm sản phẩm mới. Dữ liệu ra Hiển thị lên giao diện
• Quản lý chuyên mục sản phẩm
Mục đích Admin có thể tìm kiếm, xem, sửa xóa và cập nhật các chuyên mục sản phẩm
Dữ liệu vào
+Dữ liệu tìm kiếm
+ Dữ liệu thêm chuyên mục sản phẩm mới. +Dữ liệu về update chuyên mục sản phẩm mới +Dữ liệu về chuyên mục sản phẩm cần xóa +Xem chi tiết sản phẩm
Xử lý Truy xuất dữ liệu để chỉnh sửa chuyên mục sản phẩm và cập nhập dữ liệu khi thêm chuyên mục sản phẩm mới. Dữ liệu ra Hiển thị tất cả chuyên mục sản phẩm.
3.2 THIẾT KẾ HỆ THỐNG3.2.1 Mô hình phân cấp chức năng 3.2.1 Mô hình phân cấp chức năng 3.2.1 Mô hình phân cấp chức năng
• Trang dành cho Admin
TRANG CHỦ
Hình 3.1: Mô hình phân cấp chức năng của Admin
• Trang dành cho người duyệt Web
Quản lý sản phẩm Quản lý chuyên
mục sản phẩm
Quản lý use Thay đổi password
Tìm kiếm sản phẩm Tìm kiếm sản phẩm Thêm sản phẩm mới Thêm sản phẩm mới
Xem chi tiết sản phẩm
Xem chi tiết sản phẩm Sửa sản phẩm Sửa sản phẩm Xóa sản phẩm Xóa sản phẩm Tìm kiếm chuyên mục sản phẩm Tìm kiếm chuyên mục sản phẩm Thêm chuyên mục sản phẩm Thêm chuyên mục sản phẩm
Xem chi tiết chuyên mục sản phẩm
Xem chi tiết chuyên mục sản phẩm Sửa chuyên mục sản phẩm Sửa chuyên mục sản phẩm Xóa chuyên mục sản phẩm Xóa chuyên mục sản phẩm Tìm kiếm use Tìm kiếm use Thêm use Thêm use
Xem chi tiết use
Xem chi tiết use Sửa use Sửa use Xóa use Xóa use Trang chủ Trang chủ
Hình 3.2: Mô hình phân cấp chức năng của người duyệt web
3.2.2 Mô hình UseCase
• Sơ đồ UseCase của hệ thống
admin
use
Hình 3.3: Sơ đồ UseCase của hệ thống
• Sơ đồ Usecase của Admin
Xem sản phẩm
Xem sản phẩm
Xem sản phẩm theo từng chuyên mục
Xem sản phẩm theo từng
chuyên mục Xem chi tiết sản phẩm
Xem chi tiết sản phẩm
Quản lý sản phẩm Quản lý chuyên mục sản phẩm Quản lý use Tìm kiếm Xem sản phẩm
Hình 3.4: Sơ đồ UseCase của Admin
• Sơ đồ Usecase của User
Hình 3.5: Sơ đồ UseCase của User
3.2.3 Kiến trúc hệ thống
Hệ thống Framework MVC hoạt động theo mô hình MVC với kiến trúc như sau:
admin xem chi tiet san pham
them,sua,xoa sanpham
them ,sua, xoa chuyen muc
them,sua,xoa user
tim kiem
dang nhap thay doi mat khau thoat
user
xem san pham xem san pham theo chuyen muc
Hình 3.6: Kiến trúc của hệ thống Framework MVC
3.2.3.1 Mô tả kiến trúc hệ thống
• Hệ thống hoạt động theo mô hình MVC trong đó: C = Front Controller + Action
M = Logic + DB V = View
• Block trong kiến trúc này hoạt động rất linh hoạt ,tùy từng chức năng mà nó có thể đóng vai trò như một thành phần của Controller hoặc nó có thể là một khối của view.
− Khi Block là thành phần của Controller thì nó hoạt động như một Action, thành phần của block cũng bao gồm các hàm xử lý chính như: function __construct( ), function preAction( ), function mainAction( ), function postAction( )
diện.Block này có tính sử dụng lại khi dữ liệu hiển thị trên trang web có các khối trùng lặp,thay vì phải code lại các chức năng đó thì ta chỉ cần gọi block đó.
• Cách thức hoạt động của mô hình:
− Bước 0: Ban đầu người dùng cần thực hiện chức năng gì sẽ gửi request đến cho Front Controller.
− Bước 1: Khi nhận được request từ người dùng, Front Controller sẽ điều phối request xem yêu cầu người dùng cần thực hiện chức năng gì.Sau đó sẽ lựa chọn Action cần thực hiện chức năng đó
− Bước 2: Action thực hiện xử lý các chức năng thông qua các hàm chính như funtion preAction( ), funtion mainAction ( ).Tại đây Action xử lý và gọi đến các hàm trong Logic cần thực hiện .
− Bước 3 : Logic thực hiện phần xử lý logic và sẽ truy xuất vào DB để lấy dữ liệu
− Bước 4: Tại đây DB sẽ thực hiện các câu lệnh truy vấn cơ sở dữ liệu mà logic yêu cầu như select, update, insert , delete. Từ các câu lệnh truy vấn cơ sở dữ liệu thì hệ thống sẽ truy cập vào hệ thống cơ sở dữ liệu DB server.Tại đây dữ liệu yêu cầu được lấy ra .
− Bước 5: Kết quả của dữ liệu truy vấn sẽ được trả về cho Action.Action sẽ gọi vào block nếu website có nhiều block khác nhau và thực hiện nhiều chức năng khác nhau .
− Bước 6: Các Block lúc này sẽ có vai trò như Action và truy xuất vào Logic cần thực hiện
− Bước 7: Từ Logic sẽ truy xuất vào DB cần thực hiện
− Bước 8 : Tại đây DB sẽ thực hiện các câu lệnh truy vấn cơ sở dữ liệu mà logic yêu cầu như select, update, insert , delete. Từ các câu lệnh truy vấn cơ sở dữ liệu thì hệ thống sẽ truy cập vào hệ thống cơ sở dữ liệu DB server.Tại đây dữ liệu yêu cầu được lấy ra .
được chuyển vào View
− Bước 10: Action xử lý thông tin hiển thị và cho hiển thị dữ liệu vào View
− Bước 11:Mọi xử lý của hệ thống sẽ trả về Front Controller,tại đây nó sẽ điều phối dữ liệu để chuyển qua View hiển thị lên giao diện
− Bước 12: dữ liệu mà người dùng yêu cầu sẽ được đáp trả thông qua giao diện của website.
3.2.3.1 Mô hình Sequence Diagram của kiến trúc hệ thống
Actor FrontController Action Block View Logic DataBase
1 : Request() 2 : Request() 3 : Request() 4 : Query() 5 : Request() 6 : Request() 7 : Query() 8 : Response() 9 : Response() 10 : Response() 11 : Response()
Hình 3.7: Mô hình Sequence Diagram của kiến trúc hệ thống Framework MVC
FrontController Action Block Logic DataBase BaseView 1: Request 2: Request 4: Request 5: Request 6: Query 3: Query 7: Response 8: Response 9: Response
Hình 3.8: Mô hình Class Diagram của kiêns trúc hệ thống Framework MVC
3.2.4 Chức năng đăng nhập
3.2.4.1 Mô tả chức năng đăng nhập
Chức năng đăng nhập dùng cho người quản lý website.Khi người quản lý muốn đăng nhập website thì họ phải đưa request vào hệ thống thông quan form đăng nhập của website.FrontController sẽ nhận request và xử lý , nó sẽ điều phối đến Action thích hợp là LoginAction. LoginAction.php gọi đến AdminLogic bằng hàm checkUser(), tại đây nó sẽ xử lý kiểm tra dữ liệu bằng hàm selectUser().Từ AdminLogic gọi đến AdminDB bằng hàm selectOne().Kết quả kiểm tra được trả về LoginAction. LoginAction sẽ xử lý và gọi đến các block liên quan.Các Block đó sẽ xử lý tiếp các yêu cầu và trả lại kết quả cho view.Mọi kết quả trả về sẽ được trả về cho FrontController để điều phối trả lại kết quả ra view cho người dùng.Chi tiết về cách thức hoạt động của chức năng đăng nhập thể hiện trên mô hình seaquence diagram và mô hình class diagram.
Hình 3.9: Mô hình Sequence Diagram của chức năng đăng nhập
3.2.4.3 Mô hình Class Diagram của chức năng đăng nhập
Hình 3.10: Mô hình Class Diagram của chức năng đăng nhập
3.2.5 Mô hình Sequence Diagram cho các chức năng chính của hệ thống
3.2.5.1 Mô hình Sequence Diagram đối với người duyệt web
Actor LoginAction LoginBlock View AdminLogic AdminDb
1 : Request() 2 : checkUser () 4 :selectOne () 5 : Request() 6 : Request() 7 : Request() 8 : Response() 3 : selectUser () LoginAction LoginBlock BaseView AdminDb AdminLogic 2:Query 1:Request 4:Request 3:Request
• Mô hình Sequence Diagram của trang chủ phía người dùng
Hình 3.11: Mô hình Sequence Diagram của trang chủ phía người dùng