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.
Trang 1Bài 1: Mô Hình MVC
Trang 2Mục tiêu
Trang 3Giới thiệu mô hình MVC
tiên bởi Trygve_Reenskaug vào năm 1979
framework và GUI framework, gồm có:
Ruby On Rails: Một web-framework 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 web-framework để phát triển các ứng dụng web trên NET
Apache Struts: Một Java web-framework rất phổ biến
… và rất nhiều framework khác
devloper có thể chia nhỏ code của mình thành ba phần:
Model: duy trì dữ liệu và các quy tắc xử lý(bussiness rule)
View: hiển thị dữ liệu và các thành phần giao diện người dùng
Controller: điều khiển các sự kiện của người dùng có ảnh đến Model và View
Trang 4Giới thiệu mô hình MVC
Người dùng tương tác bằng cách nhấn chuột và các link hoặc submit form,
Controller sẽ điều khiển hoạt động này và đưa ra hành động thích hợp(thao tác với model và cập nhât dữ liệu)
Trang 5Giới thiệu mô hình MVC
trên View, cũng có thể giử yêu cầu đến Model để cập trạng thái của Model
trạng thái Thông báo này cho các phép các View tạo ra các hiển thị được
cập nhật và cho phép các Controller thay đổi các command
View
PDO/ 5 of 22
Trang 6Ưu nhược điểm của MVC
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.
được thay đổi, nhưng sự thay đổi được cô lập trong từng lớp, hoặc chỉ ảnh hưởng đến lớp ngay gần kề nó, chứ không làm ảnh hưởng đến toàn bộ
chương trình.
chia theo cách khác.
Trang 7Ưu nhược điểm của MVC
sẽ gây cồng kềnh, tốn thời gian trong quá trình phát triển.
PDO/ 7 of 22
Trang 8Xây dựng ứng dụng theo mô hình MVC
sau:
Trang 9Xây dựng Model
dư liệu nền tảng cho toàn bộ ứng dụng web
dữ liệu trực tiếp hoặc được lấy từ cơ sở dữ liệu
PDO/ 9 of 22
Trang 10Xây dựng Model
tiết của sách khi người dùng chọn sách trong danh mục
Chi tiết một quyển sách gồm có: Title, Author và Description => Vậy cần xây
dựng một lớp Book để đại diện cho những quyển sách này Lớp này được sử dụng lớp model của ví dụ
Cần hiển thị các sách dưới dạng danh mục và chi tiết một quyển sách khi được
nhấn chọn trong danh mục => Cần xây dựng một model xử lý lấy thông tin sách cho hai trường hợp là lấy một danh sách sách, và lấy một sách theo tiêu đề
Trang 11Xây dựng Model
model/Book.php)
PDO/ 11 of 22
class Book {
public $title;
public $author;
public $description;
public function construct($title, $author, $description) {
$this->title = $title;
$this->author = $author;
$this->description = $description;
}
}
Trang 12Xâ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ừ cơ sở dữ 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];
}
}
Trang 13Xây dựng View
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
Trang 14Xây dựng View
<html>
<head></head>
<body>
<table>
<tbody>
<tr><td>Title</td><td>Author</td><td>Description</td></tr>
</tbody>
<?php
foreach ($books as $book) {
echo '<tr><td><a href="index.php?book='
$book->title '">' $book->title '</a></td><td>'
$book->author '</td><td>' $book->description '</td></tr>';
}
?>
</table>
</body>
</html>
Trang 15Xây dựng View
View để hiển thị chi tiết một quyển sách(tập tin:
view/viewbook.php)
PDO/ 15 of 22
<html>
<head></head>
<body>
<?php
echo 'Title:' $book->title '<br/>';
echo 'Author:' $book->author '<br/>';
echo 'Description:' $book->description '<br/>';
?>
</body>
</html>
Trang 16Xây dựng Controller
đều được thể hiện trong Controller
Model và View
Ví dụ: (tiếp tục với dụ hiển thị sách ở trên)
yêu cầu và tương tác đến View hiển thị dữ liệu có được từ Model
Trang 17Xây dựng Controller
PDO/ 17 of 22
include_once("model/Model.php");
class Controller {
public $model;
public function construct()
{
$this->model = new Model();
}
Trang 18Xâ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';
}
}
}
Trang 19Xây dựng Controller
PDO/ 19 of 22
<?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();
?>
Trang 20MVC