Laravel Folder & File Structure Tutorial
Laravel is a powerful PHP framework known for its elegant syntax and developer-friendly features. Understanding its folder and file structure is crucial for developing efficient and maintainable applications. This tutorial will guide you through the Laravel directory structure, explaining the purpose and functionality of each folder and file.
1. The Root Directory
When you first install Laravel, the root directory contains several folders and files:
app/
: This is where your application’s core code resides. It contains the Models, Controllers, and other crucial components.bootstrap/
: This folder contains files for bootstrapping the framework, including theapp.php
file that initializes the application.config/
: This directory contains all of your application’s configuration files.database/
: This folder contains your database migrations, seeds, and factories.public/
: Thepublic
directory contains theindex.php
file, which is the entry point for all requests entering your application. It also houses assets such as images, JavaScript, and CSS.resources/
: This directory contains your views, raw assets (LESS, SASS, JavaScript), and language files.routes/
: This folder contains all route definitions for your application.storage/
: This directory contains compiled Blade templates, file-based sessions, file caches, and other files generated by the framework.tests/
: This directory contains your automated tests.vendor/
: This directory contains your Composer dependencies.artisan
: This file is the command-line interface for Laravel.composer.json
: This file contains dependencies for your application..env
: This file contains environment-specific variables for your application.
2. Inside the app
Directory
The app
directory is the heart of your application and contains several subdirectories:
Console/
: This directory houses your custom Artisan commands.Exceptions/
: This directory contains your application’s exception handler and any custom exceptions.Http/
: This directory contains your controllers, middleware, and form requests.Controllers/
: Contains the controllers for your application, responsible for handling HTTP requests.Middleware/
: Contains middleware classes that filter HTTP requests entering your application.Jobs/
: This directory contains the jobs for your application, which are units of work that can be queued for asynchronous processing.Listeners/
: This directory contains event listeners.Mail/
: This directory contains all of your email-sending classes.Models/
: This directory contains your Eloquent models.Notifications/
: This directory contains all of the “notification” classes for your application.Policies/
: This directory contains authorization policies.Providers/
: This directory contains all of the service providers for your application.Rules/
: This directory contains custom validation rules.
3. Inside the bootstrap
Directory
cache/
: This directory contains framework-generated files for optimizing performance.app.php
: This file bootstraps the framework and configures autoloading.
4. Inside the config
Directory
This directory contains configuration files for your application. Each file corresponds to a specific aspect of the framework, such as:
app.php
: General application configuration.auth.php
: Authentication settings.database.php
: Database connections and settings.mail.php
: Email settings.
5. Inside the database
Directory
factories/
: Contains model factory definitions.migrations/
: Contains migration files for your database schema.seeds/
: Contains database seed files.
6. Inside the public
Directory
index.php
: The entry point for all HTTP requests.css/
: Contains compiled CSS files.js/
: Contains compiled JavaScript files.images/
: Contains application images.
7. Inside the resources
Directory
lang/
: Contains language files.views/
: Contains Blade template files.js/
: Contains raw JavaScript files.sass/
: Contains raw SASS files.
8. Inside the routes
Directory
web.php
: Contains routes that are accessed via the web interface.api.php
: Contains routes that are accessed via API.console.php
: Defines console-based commands.channels.php
: Defines all of the event broadcasting channels.
9. Inside the storage
Directory
app/
: Contains application-generated files.framework/
: Contains framework-generated files and caches.logs/
: Contains application log files.
10. Inside the tests
Directory
Feature/
: Contains feature tests.Unit/
: Contains unit tests.