Xây dựng MVC trong PHP thuần

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ư:

Và cấu trúc thư mục 

mvc-php-thuan

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.phpViews

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é.

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…