Bases : Architecture Laravel

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.
  • 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.
  • 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.

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.
  • 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 vers index.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 et bootstrap.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.

 

Bases : Construire un projet Laravel

La création d’un projet Laravel efficace nécessite une approche bien structurée pour organiser les données et gérer les fonctionnalités. Voici un...

Tuto : Laravel Ecommerce

Laravel 11 et Voyager forment un duo puissant pour développer rapidement des applications e-commerce robustes et personnalisables. Pourquoi : -...

Bases : Construire un projet Laravel

La création d’un projet Laravel efficace nécessite une approche bien structurée pour organiser les données et gérer les fonctionnalités. Voici un...

Tuto : Laravel Ecommerce

Laravel 11 et Voyager forment un duo puissant pour développer rapidement des applications e-commerce robustes et personnalisables. Pourquoi : -...