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ụcbootstrapchứa fileapp.phpkhởi động framework. Thư mục này cũng chứa một thư mụccachechứ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.phplà đầu vào cho mọi request. Các filecss,jshayimagesđề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.envlà khác nhau. Thông thường thì có 1 file.env.examplecho 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.examplera file.envvà 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.phplà nơi khai báo chúng. Exceptions/là thư mục chứa các exception tự tạo vàHandler.phplà 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,middlewareModels/: 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/
trannguyenhan
Welcome to Hacer!