Passer au contenu principal

Introduction

La structure d’application par défaut de Laravel est un bon point de départ pour des applications aussi bien petites que grandes. Cependant, vous êtes libre de structurer votre application comme vous le souhaitez. Laravel n’impose presque aucune restriction sur l’emplacement des classes, du moment que Composer peut les charger automatiquement.

Répertoire racine

Lorsque vous créez un nouveau projet Laravel, la structure suivante est générée :
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json

Répertoire app/

Contient le code cœur de l’application. Les contrôleurs, modèles, middlewares — presque toutes les classes de l’application — s’y trouvent. Par défaut, il contient les sous-répertoires Http, Models et Providers. Lorsque vous générez des classes avec les commandes Artisan, d’autres sous-répertoires sont créés automatiquement.

Répertoire bootstrap/

Contient le fichier app.php qui démarre le framework. Il contient également le répertoire cache/ qui stocke les fichiers d’optimisation de performance (cache de routes, cache de services).

Répertoire config/

Contient tous les fichiers de configuration de l’application. Il est recommandé de lire ces fichiers pour connaître les options disponibles.

Répertoire database/

Contient les migrations, les factories de modèles et les seeders. Les fichiers de base de données SQLite peuvent également y être placés.

Répertoire public/

Contient index.php, point d’entrée de toutes les requêtes vers l’application. Il contient également les assets (images, JavaScript, CSS).
La racine documentaire de votre serveur web doit pointer vers le répertoire public/ de votre projet Laravel. Exposer directement la racine du projet ou un sous-répertoire présente un risque d’exposition de fichiers sensibles.

Répertoire resources/

Contient les vues ainsi que les assets bruts (CSS et JavaScript avant compilation).

Répertoire routes/

Contient toutes les définitions de routes de l’application. Par défaut, il contient deux fichiers de routes : web.php et console.php.
FichierUsage
web.phpRoutes destinées au navigateur. Le groupe de middlewares web fournit sessions, protection CSRF et chiffrement des cookies.
console.phpFichier permettant de définir des commandes Artisan sous forme de closures.
api.phpRoutes API sans état. À ajouter avec la commande install:api.
channels.phpFichier d’enregistrement des canaux de diffusion d’événements.

Répertoire storage/

Contient les fichiers générés par le framework : logs, templates Blade compilés, sessions basées sur fichier, cache basé sur fichier, etc. Il est divisé en trois sous-répertoires : app/, framework/ et logs/.

Répertoire tests/

Contient les tests automatisés. Des exemples de tests unitaires et fonctionnels utilisant Pest ou PHPUnit sont fournis par défaut.

Répertoire vendor/

Contient les dépendances Composer. Ne le versionnez pas.

Détail du répertoire app/

De nombreuses classes du répertoire app peuvent être générées via des commandes Artisan. Pour lister les commandes disponibles, exécutez :
php artisan list make
Contient les contrôleurs, middlewares et form requests. Presque toute la logique de traitement des requêtes y réside.
Contient toutes les classes de modèles Eloquent. Chaque table de la base de données a un « modèle » correspondant, utilisé pour requêter et insérer les données.
Contient tous les service providers de l’application. Les service providers lient des services au conteneur, enregistrent des événements, etc., pour amorcer l’application.
Contient toutes les commandes Artisan personnalisées. Elles peuvent être générées avec la commande make:command.
Contient toutes les exceptions personnalisées de l’application. Elles peuvent être générées avec la commande make:exception.

Fichiers importants

Fichier .env

Gère les valeurs de configuration qui varient selon l’environnement (connexion à la base de données, clés d’API, etc.). Il est référencé via le helper env() depuis les fichiers de configuration du répertoire config/.
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite

Fichier artisan

Point d’entrée de l’interface en ligne de commande Artisan. Exécutez-le au format php artisan <nom-de-commande>.

Prochaines étapes

Routage

Apprenez à définir des routes et à associer une URL à la logique de votre application.
Dernière modification le 13 juillet 2026