Ánh Văn Hóa Blog

Dự án 1 lập trình web fpt polytechnic

Dự án 1 lập trình web fpt polytechnic
Nguyễn Văn Ánh

Nguyễn Văn Ánh

blogger

Publish: 22 thg 2, 2024

Bạn có đang gặp khó trong quá trình làm dự án 1 tại cao đẳng FPT ?

Full source code liên hệ mình

Chắc chắn bài viết này dành cho bạn, trong bài này mình sẽ hướng dẫn các bạn cấu trúc thư mục dự án, tổ chức code tái sự dụng để dự án 1 trở lên nhàn nhất có thể.

Cấu trúc thư mục

📦project-one
 ┣ 📂admin
 ┃ ┣ 📜index.php
 ┃ ┗ 📜routes.php
 ┣ 📂asset
 ┃ ┣ 📂css
 ┃ ┣ 📂images
 ┃ ┗ 📂js
 ┣ 📂controllers
 ┃ ┣ 📂admin
 ┣ 📂database
 ┣ 📂models
 ┣ 📂PHPMailer
 ┣ 📂views
 ┃ ┣ 📂admin
 ┣ 📜config.php
 ┣ 📜core.php
 ┣ 📜index.php
 ┣ 📜routes.php
 ┗ 📜utils.php
  • File index.php file gốc tập trung các file cần thiết
  • File routes.php lữu các tuyến đường của trang người dùng
  • File utils.php chứa các function sử dụng nhiều nơi như uploadImage
  • File core.php chức các function chính tạo nên website
  • File config.php chứa các cấu hình như VN_Pay
  • Folder views chưa giao diện người dùng và quản trị
  • Folder controllers chứa function tương tác với models rồi trả về view
  • Folder models chứa các function tương tác với database
  • Folder database kết nối database và function tương tác tái sử dụng
  • Folder admin như 1 tuyến đường cho nhà quản trị, nó cũng có file index.phprouter.php
  • Folder asset chưa js, css, image
  • Folder PHPMailer thư viện gửi mail

Tổng quan mô hình MVC

Nếu bạn chưa biết đến mô hình MVC thì có thể là khó hiểu nhưng đừng lo, bạn có thể đọc tài liệu trên google, để mình giới thiệu qua về mô hình MVC.

MCV viết tắt của Module Controller View, khi một website được chạy nơi tiếp nhận yêu cầu là controller nó sẽ tương tác với models, models là nơi tương tác với database từ đó lấy được dữ liệu kết hợp với view và trả view về cho người dùng.

Mô tả hoạt động

Tại file index.php mình sử dụng 1 vòng for để lặp qua mảng $routers thay vì khai báo từ cái như dự án mẫu mình làm như vậy sẽ nhanh và khai khai báo các tuyến đường các cũng nhẹ nhàng hơn.

Trong file core.php mình có function route khi gọi hàm này nó sẽ trả về cho mình 1 mảng

function route($path, $fun, $role = 0)
{
    array_push($_SESSION['paths'], $path);
    return [
        "view" => $fun,
        "path" => $path,
        "role" => $role
    ];
}

Mảng này có view thực chất là 1 function, path là đường dẫn, role phân quyền người dùng, khi khai báo nhiều tuyến đường sẽ được kết quả như sau.

$routers = [
    [
        "view" => 'controller_home',
        "path" => '/',
        "role" => 1
    ],
    [
        "view" => 'controller_product',
        "path" => 'product',
        "role" => 1
    ]
]

Khi ta lặp qua mảng này nó khớp với path nào thì ta sẽ gọi view nó chính là 1 function và chạy vào controller, trong controller ta sẽ tương tác với models và trả về view thông qua fucntion view() trong file core.php hoặc viewAdmin() nếu là giao diện của trang quản trị.

Trong folder database dùng để kết nối đến database và chứa các function được tái sử dụng như getOne insert bởi vì models nào cũng có lấy 1 và tạo

Để kế thừa được nó các cần biết về class trong folder models được khai báo các đối tượng sản phẩm, danh mục và kế thừa lại những function đó mà không cần khai báo lại.

Đối với hoạt động của trang quản trị cũng tượng tự.

Phần kết

Các tổ chức và tạo nên thư viện nó hơi lạ, vì đây là mình tự nghĩ ra và cũng tham khảo mô hình MVC, nếu bạn cảm thấy khó có thể dùng cách dự án mẫu tại đây.

Core project

Đừng quên là mình nhận hỗ trợ dự án 1 lập trình website và phát triển phần mềm

Chúc các bạn thành công !