Hướng dẫn cách tổ chức project PHP theo mô hình MVC OOP

Hôm trước mình có đọc được một bài viết của một bạn về cách tổ chức code trong mô hình MVC theo OOP, có rất nhiều đóng góp hữu ích, nhưng hôm nay mình tìm thì không thấy đâu nên mong mọi người giúp đỡ. Tổ chức bên trong model sẽ như thế nào và nó sẽ gọi đến nhau như thế nào.
Thanks all

2 Likes

Bạn có thể xem ở đây nhé
http://tailieulaptrinh.com/php/mo-hinh-mvc-co-ban-trong-php.html

1 Like

Cấu trúc thư mục thì có 2 cách cấu trúc: module và MVC.

Trước tiên bạn phải hiểu module và MVC là gì đã. MVC thì phổ biến, là 1 design pattern nhằm mục đích phân tách code của view và model. Module là tập hợp các class có các chức năng liên quan với nhau, như: module Authentication xử lý login, logout, register; module Product xử lý thao tác đến sản phẩm, hiện danh sách sản phẩm, sản phẩm chi tiết.

Quay trở lại cấu trúc, 1 project có thể phân chia theo module hoặc MVC. Phân chia module thì trong project có các thư mục đại diện cho module, như: ProductModule, UserModule, OrderModule,… Trong mỗi thư mục xxxModule có 3 thư mục con là Controllers, Views, Models liên quan đến module đó nhưng phân chia class theo mô hình MVC. Ví dụ cụ thể cho phân chia này là Zend Framework.

Cách phân chia thứ 2 là MVC, phổ biến hơn. Thư mục gốc chứa 3 thư mục con: Controllers, Views, Models. Trong từng thư mục này sẽ chứa tất cả các class (file) thuộc tất cả module nhưng chỉ thuộc 1 trong 3 phần: M, V, C. Ví dụ:
Controllers: UserController, ProductController
Models: User, Product
Views: all-user.html, user-detail.html (User Module), listProduct, product-details (Product Module)
Framework phân chia dạng này có thể kể đến là Laravel, Symfony

1 Like

Cho mình hỏi thêm chút:
MÌnh thắc mắc cái phần model. Trong model thì sẽ có các class của các đối tượng vậy thì cái thao tác với CSDL sẽ ở đâu bởi vì trong Controller mình sẽ gọi đến các hàm thao tác dữ liệu đấy

Mỗi dự án sẽ có model khác nhau.
Dự án nhỏ thì Model chính là database với hỗ trợ ORM Framework.
Dự án lớn thì sử dụng mô hình 3-tier: 1-tier trên cùng là client, 2-tier ở giữa là business logic, 3-tier dưới cùng là database. Controller của framework chỉ giao tiếp với tầng client.

Vậy các object để thao tác ở Controller sẽ là các class được sinh ra từ ORM Framework đúng k bạn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?