MVC là một design pattern được dùng vào hầu hết các web framework và GUI framework, gồm có:Ruby On Rails: Một webframework viết trên Ruby rất thịnh hành.Apple Cocoa: Apple’s framework cho phát triển các ứng dụng Mac OS và iOS.ASP.Net Framework: Microsoft’s webframework để phát triển các ứng dụng web trên .NET.Apache Struts: Một Java webframework rất phổ biến… và rất nhiều framework khác.
Bài 1: Mô Hình MVC Mục tiêu Mô hình MVC Lịch sử Giới thiệu mô hình MVC Ưu nhược điểm MVC Xây dựng ứng dụng theo mô hình MVC Xây dựng Model Xây dựng View Xây dựng Controller Giới thiệu mô hình MVC MVC viết tắt Model-View-Controller MVC mô tả Trygve_Reenskaug vào năm 1979 MVC design pattern dùng vào hầu hết web framework GUI framework, gồm có: Ruby On Rails: Một web-framework viết Ruby thịnh hành Apple Cocoa: Apple’s framework cho phát triển ứng dụng Mac OS iOS ASP.Net Framework: Microsoft’s web-framework để phát triển ứng dụng web NET Apache Struts: Một Java web-framework phổ biến … nhiều framework khác MVC Là design pattern, theo hướng đối tượng, cho phép devloper chia nhỏ code thành ba phần: Model: trì liệu quy tắc xử lý(bussiness rule) View: hiển thị liệu thành phần giao diện người dùng Controller: điều khiển kiện người dùng có ảnh đến Model View Giới thiệu mô hình MVC Người dùng tương tác cách nhấn chuột link submit form, Controller điều khiển hoạt động đưa hành động thích hợp(thao tác với model cập nhât liệu) PDO/ of 22 Giới thiệu mô hình MVC Trong Controller: gửi yêu cầu đến view gắn kết với để thay đổi hiển thị View, giử yêu cầu đến Model để cập trạng thái Model Model: thông báo đến View Controller có liên quan có thay đổi trạng thái Thông báo cho phép View tạo hiển thị cập nhật cho phép Controller thay đổi command View: yêu cầu Model gửi thông tin mà cần để tạo hiển thị View PDO/ of 22 Ưu nhược điểm MVC Ưu điểm Phát triển phần mềm: chuyên nghiệp hóa, chia công việc cho nhiều nhóm chuyên môn khác nhau: nhóm thiết kế, nhóm lập trình, nhóm tổ chức csdl… Gúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp Bảo trì: Với lớp phân chia, thành phần hệ thống dễ thay đổi, thay đổi cô lập lớp, ảnh hưởng đến lớp gần kề nó, không làm ảnh hưởng đến toàn chương trình Mở rộng: Việc thêm chức vào cho lớp dễ dàng phân chia theo cách khác PDO/ of 22 Ưu nhược điểm MVC Nhược điểm Thích hợp với dự án vừa lớn, với dự án nhỏ, việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trình phát triển Tốn thời gian trung chuyển lớp PDO/ of 22 Xây dựng ứng dụng theo mô hình MVC Giả sử tạo cấu trúc thư mục thư mục gốc website sau: PDO/ of 22 Xây dựng Model Model thường nên xây dựng trước, Model phục vụ dư liệu tảng cho toàn ứng dụng web Nhiều chức Controller phụ thuộc vào Model Trong Model có phương thức xử lý liên quan đến liệu: liệu trực tiếp lấy từ sở liệu PDO/ of 22 Xây dựng Model Ví dụ: Cần hiển thị sách dạng danh mục hiển thị chi tiết sách người dùng chọn sách danh mục Phân tích yêu cầu: Chi tiết sách gồm có: Title, Author Description => Vậy cần xây dựng lớp Book để đại diện cho sách Lớp sử dụng lớp model ví dụ Cần hiển thị sách dạng danh mục chi tiết sách nhấn chọn danh mục => Cần xây dựng model xử lý lấy thông tin sách cho hai trường hợp lấy danh sách sách, lấy sách theo tiêu đề PDO/ 10 of 22 Xây dựng Model Xây dựng lớp Book thể hiển cho sách (tập tin model/Book.php) class Book public public public { $title; $author; $description; public function construct($title, $author, $description) { $this->title = $title; $this->author = $author; $this->description = $description; } } PDO/ 11 of 22 Xây dựng Model include_once("model/Book.php"); class Model { public function getBookList() { //sau số giá trị cho sẵn để mô lấy từ sở liệu return array( "Jungle Book" => new Book("Jungle Book", "R Kipling", "A classic book."), "Moonwalker" => new Book("Moonwalker", "J Walker", ""), "PHP for Dummies" => new Book("PHP for Dummies", "Some Smart Guy", "") ); } public function getBook($title) { // we use the previous function to get all the books // and then we return the requested one // in a real life scenario this will be done through // a database select command $allBooks = $this->getBookList(); return $allBooks[$title]; } } PDO/ 12 of 22 Xây dựng View Mỗi view kết hiển thị theo yêu cầu Ví dụ: thông tin sách cần hiển thị hình sau: Với yêu cầu xây dựng View để thị danh sách sách View để hiển thị chi tiết sách (khi người dùng nhấn vào tiêu đề sách view liệt kê danh mục sách) PDO/ 13 of 22 Xây dựng View View để hiển thị danh mục sách (tập tin: view/booklist.php) TitleAuthorDescription PDO/ 14 of 22 Xây dựng View View để hiển thị chi tiết sách(tập tin: view/viewbook.php) PDO/ 15 of 22 Xây dựng Controller Các chức mà người dùng thực trang web thể Controller Điều khiển kiện gây người dùng có ảnh hưởng đến Model View Ví dụ: (tiếp tục với dụ hiển thị sách trên) Cần phải xây dựng Controller tương tác đến Model để lấy liệu theo yêu cầu tương tác đến View hiển thị liệu có từ Model PDO/ 16 of 22 Xây dựng Controller Xây dựng Controller (tập tin controller/Controller.php) include_once("model/Model.php"); class Controller { public $model; public function construct() { $this->model = new Model(); } PDO/ 17 of 22 Xây dựng Controller public function invoke() { if (!isset($_GET['book'])) { //sẽ hiển thị toàn sách có //yêu cầu sách cụ thể $books = $this->model->getBookList(); include 'view/booklist.php'; } else { //hiển thị sách yêu cầu người dùng nhấn chọn $book = $this->model->getBook($_GET['book']); include 'view/viewbook.php'; } } } PDO/ 18 of 22 Xây dựng Controller Trang index.php PDO/ 19 of 22 MVC PDO/ 20 of 22 [...]... href="index .php? book=' $book->title '">' $book->title '' $book->author '' $book->description ''; } ?> PDO/ 14 of 22 Xây dựng View View để hiển thị chi tiết một quyển sách(tập tin: view/viewbook .php) < ?php echo 'Title:' $book->title ''; echo 'Author:' $book->author ''; echo 'Description:' $book->description... $this->model = new Model(); } PDO/ 17 of 22 Xây dựng Controller public function invoke() { if (!isset($_GET['book'])) { //sẽ hiển thị toàn bộ các sách đang có nếu không có //yêu cầu một sách cụ thể nào $books = $this->model->getBookList(); include 'view/booklist .php' ; } else { //hiển thị sách được yêu cầu khi người dùng nhấn chọn $book = $this->model->getBook($_GET['book']); include 'view/viewbook .php' ;... (tập tin model/Book .php) class Book public public public { $title; $author; $description; public function construct($title, $author, $description) { $this->title = $title; $this->author = $author; $this->description = $description; } } PDO/ 11 of 22 Xây dựng Model include_once("model/Book .php" ); class Model { public function getBookList() { //sau đây đi một số giá trị cho sẵn để mô phỏng được lấy từ... $this->model->getBook($_GET['book']); include 'view/viewbook .php' ; } } } PDO/ 18 of 22 Xây dựng Controller Trang index .php < ?php //Tất cả tương tác được thông qua trang index và được chuyển(forwarded) trực tiếp tới controller include_once("controller/Controller .php" ); $controller = new Controller(); $controller->invoke(); ?> PDO/ 19 of 22 MVC PDO/ 20 of 22 ... như hình sau: Với yêu cầu như vậy sẽ xây dựng View để hiện thị danh sách sách View để hiển thị chi tiết một quyển sách (khi người dùng nhấn vào tiêu đề sách trong view liệt kê danh mục sách) PDO/ 13 of 22 Xây dựng View View để hiển thị danh mục sách (tập tin: view/booklist .php) TitleAuthorDescription < ?php. .. "Moonwalker" => new Book("Moonwalker", "J Walker", ""), "PHP for Dummies" => new Book( "PHP for Dummies", "Some Smart Guy", "") ); } public function getBook($title) { // we use the previous function to get all the books // and then we return the requested one // in a real life scenario this will be done through // a database select command $allBooks = $this->getBookList(); return $allBooks[$title]; } } PDO/... trong Controller Điều khiển các sự kiện gây ra bởi người dùng có ảnh hưởng đến Model và View Ví dụ: (tiếp tục với dụ hiển thị sách ở trên) Cần phải xây dựng một Controller tương tác đến Model để lấy dữ liệu theo yêu cầu và tương tác đến View hiển thị dữ liệu có được từ Model PDO/ 16 of 22 Xây dựng Controller Xây dựng Controller (tập tin controller/Controller .php) include_once("model/Model .php" ); ... Mô hình MVC Lịch sử Giới thiệu mô hình MVC Ưu nhược điểm MVC Xây dựng ứng dụng theo mô hình MVC Xây dựng Model Xây dựng View Xây dựng Controller Giới thiệu mô hình MVC MVC viết... view/booklist .php) TitleAuthorDescription < ?php foreach ($books as $book) { echo '