PHP là ngôn ngữ mạnh mẽ được sử dụng trong lập trình website. Hiện nay có nhiều Framework PHP được nhiều người ưa chuộng. Trong số đó phải kể đến một số cái tên như Laravel, Codeigniter, Zend, Symfony, Yii… Tuy nhiên để học nhanh Framework thì bạn phải thành thạo PHP thuần trước đã.
Bài viết này sẽ giúp bạn hiểu rõ hơn về mô hình MVC. Cách thức hoạt động cũng như hiểu rõ hơn về lập trình hướng đối tượng OOP được sử dụng trong Framework.
Hướng dẫn xây dựng MVC trong PHP thuần
Khi được học MVC thì bạn sẽ biết rằng nó bao gồm Models, Controllers và Views. Models sẽ đảm nhận vai trò thao tác với cơ sở dữ liệu. Controllers là bộ điều khiển trung tâm, mọi hoạt động đều phải đi qua Controller. Còn Views sẽ nhận dữ liệu từ Controllers rồi in dữ liệu lên trình duyệt.
Để xây dựng được mô hình MVC bạn cần phải đọc qua các bài viết như:
- Hàm __construct và __destruct trong PHP
- Tìm hiểu Class trong PHP
- Public, Private, Protected trong PHP
- Từ khóa this, self trong PHP
- Namespace trong PHP
Và cấu trúc thư mục
Các thư mục cần tạo đó là:
- Config -> Trong Config chứa file config.php
- Controllers -> Trong Controllers chứa file BaseController.php
- Models -> Trong Models chứa file Model.php
- Views -> Trong Views chứa home.php để hiển thị nội dung
- index.php
Cấu trúc đường dẫn MVC
http://localhost/MVCPHP/index.php/BaseController/index
Qua cấu trúc đó bạn sẽ thấy rằng mọi Request đều phải đi qua tập tin index.php. Nó đóng vai trò quan trọng trong mô hình MVC.
Tiếp theo là BaseController đây là Class nằm trong tập tin BaseController. Tên Class phải trùng vời tên tập tin.
Cuối cùng là phương thức index. Phương thức này tùy tùy vào nhu cầu bạn đặt. Có thể đặt là homepage, create, display vv…
Các bước tạo MVC trong PHP thuần
Bước 1: Bạn sẽ tạo file Model.php
nằm trong thư mục Models
<?php namespace AppModels; use AppConfigDBConnect as DBConnect; class Model { protected $connect; protected $data; protected $result; public function __construct() { $this->connect = new DBConnect(); $this->data = $this->connect->connect(); } public function getData() { $sql = "SELECT * FROM admin"; $result = mysqli_query($this->data, $sql); return $result; } }
Bước 2: Tạo file NewController.php
trong thư mục Controllers
<?php namespace AppControllers; use AppModelsModel; Class NewController { protected $load; public function index() { echo 'Trang chu'; } }
Bước 3: Tạo tập tin home.php
ở Views
Trang chu
Bước 4: Tạo file config.php
<?php define('BASEURL', 'http://localhost/MVCPHP/'); define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS',''); define('DB_NAME','database'); define('SITENAME','APP'); ?>
Bước 6: Tạo file index.php
Index là nơi mọi dữ liệu đi qua vì thế cần phải load các file khác vào trong nó. Tiếp theo bạn cần tạo router để chạy khớp controller và hàm để chạy.
<?php require_once __DIR__. '/Config/config.php'; require_once __DIR__ . '/autoload.php'; require_once __DIR__ . '/Route/Router.php'; require_once __DIR__ . '/controllers/BaseController.php'; $router = new Router; // Add the routes $router->add('index', ['controller' => 'BaseController', 'action' => 'index']); $router->add('{controller}/{action}'); $router->dispatch($_SERVER['QUERY_STRING']);
Xong xuôi mọi thứ bạn gõ lên trình duyệt http://localhost/MVCPHP/index để chạy xem kết quả nhé.
Nếu muốn include file tại Views bạn hãy sửa lại hàm ở trong NewController.php thành
public static function index() { include './Views/home.php'; }
Bài viết này đã giới thiệu về mô hình MVC bằng PHP thuần. Tuy nhiên cấu trúc file chưa được chuẩn lắm. Bạn có thể tham khảo cách cấu trúc thư mục giống như Laravel hoặc Codeigniter nhé.