Khi tìm hiểu về một framework thì mình thường tìm hiểu tới các tổ chức của framework đó đầu tiên, nó giúp chúng ta hiểu hơn về framework, cách triển khai cũng như nhiều cái khác nữa. Laravel chia cấu trúc thư mục cũng khá tường minh và phân nhiệm vụ cũng khá rõ ràng, cấu trúc thư mục gốc của Laravel sẽ giống như sau:
Project
- app/
- Console/
- Commands/
- Kernel.php
- Exceptions/
- Handler.php
- Http/
- Controllers/
- Middleware/
- Repositories/
- Requests/
- Kernel.php
- Models/
- Providers/
- bootstrap/
- config/
- database/
- public/
- resources/
- routes/
- storage/
- test/
- vendor/
- .env
- artisan
- composer.json
- server.php
- package.json
app/
: Thư mục này chứa hầu hết code của chúng ta trong ứng dụng.bootstrap/
: Thư mụcbootstrap
chứa fileapp.php
khởi động framework. Thư mục này cũng chứa một thư mụccache
chứa các tệp được tạo khung để tối ưu hóa hiệu suất. Chúng ta thường không cần phải sửa đổi bất kỳ tệp nào trong thư mục này.config/
: Như tên của nó đã khá rõ ràng, nó chứa các thư mục cấu hình của ứng dụng.database/
: chứa cácseeds
,migrations
,factories
.public/
: là một public dictionary, chứ fileindex.php
là đầu vào cho mọi request. Các filecss
,js
hayimages
đều được đặt ở đây. Thư mục này là công khai vì vậy mọi file bạn đặt trong đây đều có thể được truy cập từ bên ngoài.resources/
: chứa cácviews
được định nghĩa và các nội dung CSS, Javascript chưa được biên dịch.routes/
: chứa toàn bộ các đường dẫn được định nghĩa trong ứng dụng,web.php
định nghĩa các đường dẫn web,api.php
định nghĩa các đường dẫn API.storage/
: nơi đây chứa các file log ứng dụng của bạn, các file blade đã biên dịch, các file session, file cache, các file được gen bởi framework. Nơi đây cũng là nơi lưu trữ các file của lập trình viên.tests/
: chứa các automated tests.vendor/
: thư mục này chứa các thư viện cài thông quacomposer
..env
: đây là file cấu hình chung của hệ thống, thường file này sẽ nằm trong.gitignore
, vì mỗi môi trường sẽ có cấu hình trong file.env
là khác nhau. Thông thường thì có 1 file.env.example
cho mỗi dự án làm khuôn mẫu trước, khi clone dự án về, việc đầu tiên là copy file.env.example
ra file.env
và cấu hình lại cho đúng.
Các thư mục trong app/
sẽ là nơi chúng ta làm việc nhiều nhất hầu hết mọi thứ của chúng ta đều ở trong đây:
- Đầu tiên là trong thư mục
Commands/
, nơi đây chứa các command artisan tự tạo vàKernel.php
là nơi khai báo chúng. Exceptions/
là thư mục chứa các exception tự tạo vàHandler.php
là nơi điều hướng, xử lý các exception, trong các bài viết cụ thể mình sẽ nó rõ hơn.Http/
: nơi đây chứa cáccontroller
,repository
,request
,middleware
Models/
: nơi chứa các lớp đại diện cho cơ sở dữ liệu
Tham khảo: https://laravel.com/docs/9.x/