Xây dựng ứng dụng theo mô hình MVC

PHP MVC 17/04/2022 07:00 2857
Trong thực tế khi xây dựng một ứng dựng theo mô hình MVC thì bạn cần phân tích & chuẩn hóa dữ liệu để xây dựng các model. Xác định các mối quan hệ ràng buộc, gom nhóm để xây dựng các controller độc lập. Cuối cung là thiết kế view một cách khoa học.

 

 

1. Xây dựng Model.

  • Thường thì khi bắt tay vào xây dựng một ứng dụng thì chúng ta sẽ xây dựng Model trước bởi vì Model phục vụ như là nền tảng dữ liệu cho toàn bộ ứng dụng web.
  • Nhiều chức năng của Controller phụ thuộc vào model.
  • Trong Model sẽ có các phương thức xử lý liên quan đến dữ liệu: dữ liệu trực tiếp hoặc dữ liệu lấy từ CSDL.

Ví dụ: Hiển thị sách có trong danh mục sách: dạng danh mục sách và dạng hiển thị từng sách theo lựa chọn của người dùng.

Phân tích yêu cầu:

  • Theo yêu cầu: các quyển sách sẽ có các thông tin: title, author, description
  • Xây dựng class Book để tổ chức thông tin này.
  • Class này sẽ được gọi sử dụng tại model của ứng dụng.
class Book {
    public $title;
    public $author;
    public $description;
    
    public function __construct($title, $author, $description){
        $this->title = $title;
        $this->author = $author;
        $this->description = $description;
    }
}

Cần hiển thị các thông tin về sách: Xây dựng Model là nơi xử lý thông tin về các sách

Với yêu cầu của người dùng là hiển thị danh sách các sách, và sau khi chọn một sách bằng cách click vào link thì sẽ hiển thị thông tin của sách được chọn => Chúng ta cần phải có hai function: Lấy danh sách sáchlấy một sách theo tiêu đề được chọn.

// Class database
class Database{
	private static $_instance = null;
    private connect(){
		// Connect to database
	}
    
    public static function getInstance(){
   		if(!isset(self::$_instance)){
       		$self::$_instance = new Database();
        }
        return $self::_instance;
    }
    
	function close(){
		// Close connect to database
	}
    
	function query(){
		// Query action
	}
}

// Class bookModel
class bookModel{
	public $database;
    class __contruct(){
   		$this->database = Database::getInstance();
    }
	function getBookList(){
    	$sql = "SELECT ...";
		$books = $this->database->query($sql);
		// Some code
		return $books;
	}
	public function getBook($title){
		$allBooks = $this->getBookList();
		return $allBooks[$title];
	}
}

2. Xây dựng controller.

  • Controller được xem là “cơ bắp” của ứng dụng.
  • Mọi thứ mà người dùng có thể thực hiện trên trang web đều được thể hiện trong Controller.
  • Điều khiển các sự kiện của người dùng có ảnh hưởng đến Model và View.

Ví dụ: Cùng với ví dụ trên

Phân tích: Ta thấy 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.

class Controller {
	public $model;
    public function __construct(){
    	$this->model = new bookModel();
    }
    public function invoke(){
        if (!isset($_GET['book'])){
        	// khi người dùng chưa lựa chọn thì sẽ hiển thị danh mục sách
            $books = $this->model->getBookList();
            include 'view/booklist.php';
        }else{
            // khi người dùng lựa chọn thì sẽ hiển thị thông tin của sách được lựa chọn
            $book = $this->model->getBook($_GET['book']);
            include 'view/ pp; viewbook.php';
        }
    }
}

3. Xây dựng View

  • Xây dựng View là bước đơn giản nhất trong quá trình xây dựng ứng dụng theo mô hình MVC.
  • Mỗi View là một kết quả hiển thị theo yêu cầu.

Phân tích: dựa vào yêu cầu ta thấy cần phải hiển thị:

  • Danh mục sách: view hiển thị danh mục sách
  • Chi tiết sách được chọn: view hiển thị một sách được chọn. 
<table>
    <tr>
        <td>Title</td>
        <td>Author</td><td>Description</td>
    </tr>
    <?php
    	// hiển thị danh mục sách
        foreach ($books as $title => $book){ 
            echo '<tr>
                    <td><a href="index.php?book='.$book->title.'">'.$book->title.'</a></td>
                    <td>'.$book->author.'</td>
                </tr>';
        }
    ?>
</table>
<?php
    // hiển thị một sách cụ thể
    echo 'Title:' . $book->title . '<br/>';
    echo 'Author:' . $book->author . '<br/>';
    echo 'Description:' . $book->description .'<br/>';
?>

4. Tổng kết.

Như vậy mình đã trình bày xong các bước để áp dụng mô hình MVC vào trong một dự án. Trong bài viết tiếp theo chúng ta sẽ bắt đầu vào xây dựng một CMS chuyên nghiệp theo mô hình MVC.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.