MVC PHP – Mô hình MVC là gì?
Để xây dựng một project lớn, phức tạp thì việc cần nhiều người cùng làm, do đó, ‘Source Code’ của dự án cần đáp ứng các tiêu chí như: Dễ dàng quản lý, maintain; Có vòng đời đồng nhất, rõ ràng; Dễ dàng mở rộng.
Chính vì vậy, chúng ta cần xây dựng website/phần mềm của theo 1 quy tắc hay quy chuẩn nào đó để khi người mới join vào dự án đều có thể làm quen và bắt kịp.
Mô hình (architecture) ra đời để giải quyết vấn đề này, hiện tại có rất nhiều loại mô hình được sử dụng trên các ngôn ngữ lập trình như MVC, MVP, MVVM… đã được sáng tạo ra và áp dụng vào các dự án thực tế.
Với hầu hết các framework của ngôn ngữ PHP (Laravel, Yii, CakePHP, CodeIgniter,… ) đều đang sử dụng mô hình MVC nên bài viết này sẽ giới thiệu với các bạn về mô hình MVC và cách xây dựng mô hình MVC trong PHP.
Mô hình MVC là gì?
MVC (viết tắt của Model – View – Controller) là một mô hình thiết kế, giúp bạn tổ chức code theo từng phần độc lập với nhau và các phần tương tác với nhau theo một cách nhất định.
Cụ thể, nó sẽ đưa các phần xử lý logic và business (Model) ra khỏi phần giao diện (View) từ đó giúp việc quản lý và mở rộng code trở nên dễ dàng hơn.
MVC là một trong những khung mô hình phát triển web tiêu chuẩn ngành được sử dụng thường xuyên nhất để tạo ra các dự án có thể mở rộng.
“Model” – Đây là thành phần tập trung vào xử lý business logic của ứng dụng. Cũng thường được xem là nơi lưu trữ và xử lý dữ liệu xuyên suốt trong mô hình MVC. Các thành phần đảm nhiệm vai trò “Model” có thể kể đến bao gồm: Database; XML File và Data sources.
“Controller” – Đây là phần sẽ tiếp nhận và xử lý các yêu cầu (request) đến từ phía người dùng. Từ đây, các yêu cầu sẽ được chuyển đến các nơi tương ứng để xử lý và nhận lại kết quả phù hợp, sau đó dữ liệu sẽ được đưa sang “View” để hiển thị cho người dùng.
Hiểu một cách khác thì “Controller” là một mắt xích để kết nối 2 thành phần “Model” và “View” lại với nhau để xử lý các yêu cầu từ người dùng
“View” – Là thành phần hiển thị dữ liệu, nó sẽ không chứa bất kỳ xử lý logic nào mà đa phần chỉ sẽ chứa các form nhập liệu, các đoạn HTML hoặc các table để hiển thị dữ liệu
Ưu điểm và nhược điểm mô hình MVC
Có thể dễ dàng nhận thấy, uu điểm của mô hình MVC gồm:
● Hệ thống phân ra từng phần nên dễ dàng phát triển;
● Chia thành nhiều module nhỏ nên nhiều người có thể làm chung dự án;
● Vấn đề bảo trì cũng tương đối ok, dễ nâng cấp;
● Dễ dàng debug trong quá trình xây dựng.
Trong khi đó, những nhược điểm cũng cần lưu ý như:
● Hệ thống sẽ chạy chậm hơn PHP thuần, tuy nhiên nó không phải là vấn đề;
● Xây dựng cầu kì và mất thời gian để xây dựng thư viện, cấu trúc.
Trên thực tế, chúng ta không cần phải xây dựng lại toàn bộ các thành phần trong mô hình MVC vì đã có các PHP Framework đảm trách phần việc đó. Việc còn lại là chúng ta lựa chọn Framework nào phù hợp với các yêu cầu dự án đặt ra và “chiến thôi”.
Vòng đời website (Website life cycle)
Vòng đời của một trang web MVC bắt đầu với một người sử dụng truy cập một địa chỉ trang web với các thông số nhất định trong trình duyệt của mình. Ví dụ, ta muốn hiển thị thông tin của user có id là 15. Địa chỉ URL có thể trông như thế này: //www.domain.com/user/detail/15
Đầu tiên và quan trọng nhất, yêu cầu được xử lý bởi cái gọi là bộ định tuyến (Router), bộ định tuyến này xác định bộ điều khiển (Controller) mà chúng ta đang gọi dựa trên các tham số URL . Trong trường hợp này ta sẽ gọi tới UserController và chuyển các tham số “detail” và “15” cho nó.
Controller nhận ra những gì ta muốn từ nó dựa trên các tham số URL. Trong trường hợp này, nó sẽ nhận ra ta muốn nó hiển thị thông tin chi tiết của người dùng. Nó gọi một Model , Model này sẽ tìm kiếm người dùng trong cơ sở dữ liệu (MySQL) và trả về các chi tiết của nó.
Sau đó, Controller có thể gọi một phương thức khác trên Model (ví dụ: tính tuổi của user). Controller lưu các giá trị này vào các biến. Cuối cùng, nó Render ra View, nó xác định tên của một View dựa trên một hành động mà nó đang xử lý. Các biến chứa dữ liệu được chuyển sang View.
Lúc này, Controller đã thực hiện những gì người dùng yêu cầu, nó lấy dữ liệu từ Model dựa trên các tham số đường dẫn và chuyển chúng vào View.
Xây dựng cấu trúc thư mục để triển khai dự án MVC bằng ngôn ngữ PHP
Giải thích về cấu trúc thư mục trên:
● Thư mục mvc là thư mục chứa project.
● Thư mục public gồm các file font chữ, hình ảnh, javascript, css…
● Thư mục controllers chứa các file định nghĩa các lớp controller, trong đó có các hàm tương tác với model và gọi ra view để trả về cho người dùng.
● Thư mục models chứa các file định nghĩa các lớp model, chịu trách nhiệm thao tác với CSDL.
● Thư mục views chứa thư mục như layouts – chứa template hiển thị chung của trang web
● .htaccess hay được gọi là hypertext access là một file cấu hình sử dụng cho webserver chạy Apache, nó giúp ta định tuyến toàn bộ request về 1 file mà ta chỉ định. (nó chỉ hỗ trợ cho Apache)
Trên đây, bài viết đã trình bày khái niệm và cấu trúc thư mục triển khai mô hình MVC trong PHP, trong bài tới mình sẽ nói chi tiết hơn về cách triển khai này.