Architecture de base
nom_du_projet/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ ├── Controller.php
│ ├── Models/
│ │ ├── User.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
├── bootstrap/
│ ├── app.php
│ ├── providers.php
│ ├── cache/
│ │ ├── packages.php
│ │ ├── services.php
│ │ ├── .gitignore
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── cache.php
│ ├── database.php
│ ├── files systems.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
├── database/
│ ├── factories/
│ │ ├── UserFactory.php
│ ├── migrations/
│ │ ├── 2024_12_05_000000_create_users_table.php
│ │ ├── 2024_12_05_000001_create_password_resets_table.php
│ ├── seeders/
│ │ ├── DatabaseSeeder.php
├── public/
│ ├── index.php
│ ├── .htaccess
│ ├── robots.txt
│ ├── css/
│ ├── js/
│ ├── favicon.ico
├── resources/
│ ├── css/
│ │ ├── app.css
│ ├── js/
│ │ ├── app.js
│ │ ├── boostrap.js
│ ├── views/
│ │ ├── welcome.blade.php
│ │ ├── layouts/
│ │ ├── app.blade.php
│ │ ├── components/
│ │ ├── navbar.blade.php
├── routes/
│ ├── web.php
│ ├── console.php
├── storage/
│ ├── app/
│ │ ├── public/
│ │ ├──gitignore
│ │ ├── private/
│ │ ├──gitignore
│ │ ├── .gitignore
│ ├── framework/
│ │ ├── cache/
│ │ ├──data/
│ │ ├──gitignore
│ │ ├──gitignore
│ │ ├── sessions/
│ │ ├──gitignore
│ │ ├── views/
│ │ ├──gitignore
│ ├── logs/
│ ├── .gitignore
├── tests/
│ ├── Feature/
│ │ ├── ExampleTest.php
│ ├── Unit/
│ │ ├── ExampleTest.php
│ ├── TestCase.php
├── vendor/
├── .env
├── .env.example
├── artisan
├── composer.json
├── composer.lock
├── package.json
├── phpunit.xml
├── README.md
├── webpack.mix.js
Explications et Commentaires pour l’Architecture Laravel
Laravel suit une architecture organisée pour simplifier le développement, la maintenance et l’évolutivité des applications. Voici une explication détaillée et des commentaires pour chaque dossier et fichier :
1. nom_du_projet/
Racine du projet contenant tous les fichiers et répertoires nécessaires à une application Laravel.
2. /app/
Contient la logique métier de l’application, principalement les contrôleurs, modèles, et fournisseurs de services.
- Http/
- Controllers/ :
Contient les contrôleurs qui gèrent les requêtes entrantes et appellent les modèles ou les vues correspondantes.
Exemple :ProduitController.php
pour gérer les produits. - Controller.php :
Classe de base pour tous les contrôleurs, incluant les méthodes communes.
- Controllers/ :
- Models/
- Contient les modèles Eloquent, responsables de la gestion des données et des interactions avec la base de données.
Exemple :User.php
gère les données utilisateur.
- Contient les modèles Eloquent, responsables de la gestion des données et des interactions avec la base de données.
- Providers/
- Contient les classes de service qui enregistrent les services spécifiques dans l’application.
- AppServiceProvider.php :
Fournisseur principal pour configurer les paramètres globaux ou les services personnalisés.
- AppServiceProvider.php :
- Contient les classes de service qui enregistrent les services spécifiques dans l’application.
3. /bootstrap/
Gère le processus de démarrage de l’application.
- app.php :
Initialise le framework Laravel et configure l’environnement. - cache/ :
Contient des fichiers mis en cache pour accélérer les performances.
4. /config/
Contient tous les fichiers de configuration de l’application.
- app.php : Configure le nom de l’application, la langue, le fuseau horaire, etc.
- auth.php : Gère l’authentification.
- database.php : Paramètres de connexion à la base de données.
- logging.php : Configuration des journaux (logs).
- mail.php : Paramètres pour l’envoi d’e-mails.
- services.php : Paramètres pour des services tiers comme AWS, Stripe, etc.
5. /database/
Gère la structure et les données de la base de données.
- factories/ :
Contient des classes pour générer des données fictives pour les tests.- Exemple :
UserFactory.php
crée des utilisateurs fictifs.
- Exemple :
- migrations/ :
Scripts pour créer et modifier la structure des tables dans la base de données.
Exemple :2024_12_05_000000_create_users_table.php
crée une table « users ». - seeders/ :
Contient des classes pour insérer des données initiales dans la base de données.
Exemple :DatabaseSeeder.php
exécute tous les seeders.
6. /public/
Contient les fichiers accessibles publiquement.
- index.php :
Point d’entrée principal de l’application. Toutes les requêtes passent par ce fichier. - .htaccess :
Fichier de configuration Apache pour rediriger les requêtes versindex.php
. - robots.txt :
Spécifie les règles pour les robots d’indexation (SEO).
7. /resources/
Gère les ressources frontend et les fichiers Blade pour les vues.
- css/ : Contient les fichiers CSS, comme
app.css
. - js/ : Contient les fichiers JavaScript, comme
app.js
etbootstrap.js
. - views/ :
Contient les fichiers de vue Blade.- welcome.blade.php : Page d’accueil par défaut.
- layouts/ : Dossiers pour les mises en page réutilisables (exemple :
app.blade.php
). - components/ : Contient des composants Blade réutilisables, comme
navbar.blade.php
.
8. /routes/
Contient les fichiers de routage.
- web.php : Définit les routes pour l’interface utilisateur (HTTP).
- console.php : Définit les commandes artisan spécifiques.
9. /storage/
Gère les fichiers générés par l’application, comme les téléchargements, les logs, ou les sessions.
- app/ :
- public/ : Contient les fichiers accessibles publiquement, comme les images.
- private/ : Contient des fichiers internes non accessibles publiquement.
- framework/ :
Contient les données temporaires générées par le framework.- cache/ : Cache des fichiers.
- sessions/ : Sessions utilisateur.
- views/ : Fichiers Blade compilés.
- logs/ : Fichiers journaux contenant les erreurs et les informations système.
10. /tests/
Gère les tests automatisés.
- Feature/ : Tests pour vérifier les fonctionnalités spécifiques.
Exemple :ExampleTest.php
teste une fonctionnalité complète. - Unit/ : Tests unitaires pour vérifier une méthode ou une classe spécifique.
11. /vendor/
Contient les dépendances installées via Composer. Ne modifiez jamais ce dossier directement.
12. Fichiers Racine
- .env :
Fichier de configuration de l’environnement (base de données, clés API, etc.). - .env.example : Exemple de fichier
.env
pour démarrer rapidement. - artisan : Interface de ligne de commande Laravel pour exécuter des tâches automatisées.
- composer.json : Liste des dépendances PHP et leurs versions.
- composer.lock : Verrouille les versions exactes des dépendances installées.
- package.json : Liste des dépendances JavaScript utilisées dans le projet.
- phpunit.xml : Fichier de configuration pour PHPUnit.
- README.md : Fichier d’information sur le projet.
- webpack.mix.js : Fichier de configuration pour Laravel Mix (gestion des fichiers CSS/JS).
Résumé
Cette architecture organise l’ensemble des fichiers et dossiers de manière à séparer les responsabilités de manière claire. Laravel offre une structure modulaire permettant aux développeurs de travailler efficacement, qu’il s’agisse de gérer la logique métier, les vues frontend, ou les interactions avec la base de données. Cette organisation facilite la maintenance et la scalabilité des projets.