Lập trình MVC trong PHP

Lập trình MVC trong PHP bài bài viết hướng dẫn bạn sử dụng mô hình MVC trong quá trình phát triển các website.

I. Mô Hình  MVC (Model-View-Controller)

MVC là mô hình thường được dùng hiện nay để phát triển các webite. Vì MVC giúp tổ chức tách bạch giữa các thành phần quan trọng trong dự án:  điều khiển (controller), xử lý dữ liệu (model) và hiển thị dữ liệu (view).

Lập trình MVC trong PHP giúp tiến độ công việc ứng dụng nhanh hơn, việc nâng cấp dễ dàng hơn, rất thích hợp với các project nhiều người cùng phát triển.

Trong mô hình MVC, Controller là thành phần đóng vai trò tiếp nhận yêu cầu của user và xử lý nghiệp vụl, Model là thành phần cung cấp dữ liệu, còn View là thành phần trình bày dữ liệu (nơi có code html, css, javascript).

Nhờ tổ chức như vậy nên MVC giúp chia nhỏ quá trình xử lý của ứng dụng theo chức năng, vì thế bạn có thể làm việc trên từng thành phần riêng lẻ, không ảnh hưởng đến các thành phần khác.

Controller trong mvc

Mỗi controller là một class chứa các hàm để thực thi các yêu cầu từ user, các hàm này còn được gọi là các action. Để thực hiện chức năng của mình, action sẽ thực hiện tiếp nhận tham số, gọi model, nạp các view cần thiết để đáp ứng cho user.

Model trong mvc

Mỗi model là 1 class cung cấp dữ liệu, mỗi model có nhiều hàm thực hiện kết nối, trích lọc, chèn, chỉnh sửa dữ liệu trong database, tương tác với file system, network. Model còn tương tác với nhiều thành phần khác trong hệ thống để có được dữ liệu chính xác . Model được nạp từ controller.

View trong mvc

Mỗi view là một trang web hiển thị dữ liệu gì đó. Dữ liệu mà view hiển thị do controller cung cấp (controller lấy từ model để đưa cho view).

Sự tách biệt của giữa Model và View giúp cho người lập trình phân định rõ ràng cách thức lưu trữ dữ liệu và cách trình bày dữ liệu. Do vậy quy trình lấy dữ liệu, xử lý dữ liệu trước khi trả về sẽ không làm ảnh hưởng đến việc trình bày dữ liệu.

Mô hình này thực sự đảm bảo việc tách biệt vai trò của người thiết kế giao diện với vai trò của người lập trình. Như vậy khi làm việc theo nhóm, có thể tổ chức nhóm phát triển thành các nhóm kĩ năng và phát triển ứng dụng song song với nhau.

Tổ chức folder MVC cho website

Website nào cũng có hai phần: Back End và Front End. Mỗi phần có hệ thống folder và file riêng, layout cũng riêng.  

Tổ chức folder cho website

  • Tạo folder để chứa website trong htdocs, ví dụ banhang
  • Tạo folder admin để chứa các trang web thuộc phần back end.
  • Tạo folder site để chứa các trang web thuộc phần front end.
  • Tạo folder system để chứa file cấu hình, các file chứa hàm toàn cục dùng cho toàn website
  • Trong folder system , tạo file config.php  và khai báo các thông số website,  thông số db
<?php
define(HOST_DB , "localhost");
define(NAME_DB , "phone");
define(USER_DB , "root");
define(PASS_DB , "");
define(ROOT_URL , "/banhang");
define(ADMIN_URL , ROOT_URL."/admin");
define(SITE_URL , ROOT_URL."/site");
define(SYSTEM_PATH , ROOT_URL."/system");

Trong folder system , tạo file model_system.php  và khai báo biến connection ($conn) , hàm kết nối db (__connstruc) , thực thi sql (query)…

<?php
class model_system{
  public $conn;
  function __construct(){    
        $opt = array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
        $this->conn = new PDO(
             'mysql:host='.HOST_DB.';dbname='.NAME_DB,
             USER_DB, PASS_DB,$opt
         );
  }    
  function query($sql) { 
    $result = $this-> conn->query($sql);
    return $result;
  }
  function queryOne($sql) {          
        $result = $this->conn->query($sql);
        $row = $result->fetch();
        return $row;
  }
  function execute($sql) {           
        $result = $this->conn ->exec($sql);
        return $result;
  }
}//class

2. Tổ chức mvc cho phần admin

Tạo cấu trúc folder và file cho phần admin  như sau:

admin_mvc

3. Tổ chức mvc cho phần public

Tạo cấu trúc folder và file cho phần admin  như sau:

site_mvc

Chú ý: Trong các file đã tạo, để dễ dàng sử dụng, bạn mở từng file lên và nhập text mô tả vào nhé. Ví dụ : mở file nhasanxuat.php và nhập vào text Đây là controller nhasanxuat. Tương tự cho các file khác.

Bài viết lập trình MVC trong PHP này sẽ sử dụng database tên là phone. Bạn xem bài viết sau để tạo datatase phone nhé: Bài tập tạo database