Laravel Là gì?
Laravel là một framework phát triển web mã nguồn mở được viết bằng ngôn ngữ PHP. Nó được tạo ra bởi Taylor Otwell vào năm 2011 và đã nhanh chóng trở thành một trong những framework phát triển web PHP phổ biến nhất trên thế giới. Laravel có rất nhiều tính năng tiện ích, giúp cho việc phát triển ứng dụng web PHP trở nên dễ dàng và nhanh chóng hơn bao giờ hết.
Laravel được phát triển theo mô hình MVC(Model - Controller - View). Và trãi qua nhiều phiên bản khác nhau cho đến hiện tại laravel đã cho ra mắt phiên bản Laravel mới nhất là Laravel 10 nó đi kèm với vô số chức năng mới và thú vị khác.
Cấu trúc thư mục Laravel
Cấu trúc thư mục mặc định của Laravel ứng dụng bao gồm các thư mục và tệp tin sau:
1. Thư mục app
Thư mục app trong laravel chứa code PHP của ứng dụng, bao gồm các controllers, models, views và các tệp tin liên quan đến ứng dụng. Đây là thư mục chính của ứng dụng, hầu như tất cả các xử lý logic đều sẽ nằm trong thư mục này
2. Thư mục bootstrap
Chứa các tệp tin liên quan đến bootstrap ứng dụng, bao gồm các tệp tin khởi tạo ứng dụng và các cấu hình khởi động. Ngoài ra trong thư mục này còn có thư mục cache, thư mục cache sẽ lưu trữ các caching của hệ thống như view, truy vấn...
3. Thư mục config
Thư mục config sẽ chứa các tệp tin cấu hình của ứng dụng, bao gồm cấu hình cho các trình xử lý, cấu hình cho cơ sở dữ liệu và các cấu hình khác.
4. Thư mục database
Thư mục database sẽ chứa các tệp tin liên quan đến cơ sở dữ liệu của ứng dụng, bao gồm các migrations và seeders. Mặc định Laravel đã tạo sẵn cho chúng ta bảng users như trên hình, các migration sẽ được gắn ngày tháng năm tự động phía trước để tránh bị trùng class.
5. Thư mục public
Thư mục public sẽ chứa các tệp tin mà người dùng có thể truy cập trực tiếp qua HTTP, bao gồm tệp tin index.php và các tệp tin liên quan đến front-end như hình ảnh, video, file html, css...
6. Thư mục resource
Chứa các tệp tin tài nguyên của ứng dụng, bao gồm các views, assets và các tệp tin liên quan đến localization.
7. Thư mục route
Chứa các tệp tin định tuyến của ứng dụng, bao gồm các tệp tin định tuyến cho các API, web routes và các tệp tin liên quan đến middleware.
8. Thư mục storage.
Chứa các tệp tin lưu trữ của ứng dụng, bao gồm các logs, các sessions và các tệp tin liên quan đến cache.
9. Thư mục tests
Chứa các tệp tin liên quan đến testing của ứng dụng, bao gồm các unit tests và các feature tests.
10. Thư mục vendor
Chứa các tệp tin của các dependencies của ứng dụng, bao gồm các thư viện và các package mà ứng dụng phụ thuộc vào.
Ngoài ra, Laravel cũng cung cấp các thư mục và tệp tin khác nhưng chúng không nằm trong cấu trúc mặc định và được sử dụng khi cần thiết.
Laravel module
Ngoài cách tổ chức thư mục theo mặc định thì tuỳ thuộc vào yêu cầu của từng ứng dụng web cụ thể mà chúng ta có thể tuỳ biến lại các thư mục trong Laravel framework sao cho hợp lý.
Thông thường mình sẽ không tổ chức cấu trúc thư mục theo mặc định của Laravel framework mà sẽ dùng dưới dạng module để có thể tái sử dụng cao hơn.
Đầu tiên bạn hãy cài đặt package nwidart/laravel-module
composer require nwidart/laravel-modules
Mặc định Laravel mới nhất sẽ tự động tải các provinder mà bạn không cần phải thao tác gì thêm. Nhưng nếu bạn dùng các phiên bản laravel cũ thì hãy dùng câu lệnh
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
Để tạo mới một module Blog bạn hãy dùng lệnh artisan trong laravel.
php artisan module:make Blog
Lệnh trên sẽ tạo cho bạn một module là Modules/Blog. Về sau tất cả các module bạn tạo ra sẽ nằm trong thư mục modules. Trong thư mục Blog có cấu trúc tương tự như một project laravel mà bạn hay dùng chỉ khác là thay vì dùng thư mục model thì ở đây nhà phát triển đổi tên thành Entity. Giờ thì bạn cứ bắt đầu code ứng dụng website của mình trong thư mục blog, laravel sẽ tự động autoload các provinder vào dự án mà bạn không cần phải thao tác thêm.
Bạn có thể thao khảo các sử dụng nwidart/laravel-module thêm tại đây: https://docs.laravelmodules.com/v10/introduction
Kết Luận
Ở bài viết này mình đã giới thiệu cho mọi người về cấu trúc của thư mục Laravel. Để bạn có thể có một cái nhìn tổng quát hơn về framework này trong quá trình học laravel cũng như là thực chiến với nó. Ngoài ra để cho code của bạn có thể tái sử dụng cao nhất từ dự án này sang dự án khác thì bạn có thể sử dụng package nwidart/laravel-module để làm việc với Laravel. Chúc các bạn thành công!
Tham khảo thêm:
Laravel là gì? Framework laravel là gì?
Vòng đời laravel - Lifecycle laravel
Laravel 10 có gì mới