Apprentissage avancé de la Programmation Backend avec Laravel et PHP
Apprentissage avancé de la Programmation Backend avec Laravel et PHP

Installation de Laravel et structure du projet

Introduction : Les fondations de votre application Laravel

Bienvenue dans ce cours dédié à Laravel, le framework PHP le plus populaire et le plus puissant pour le développement backend. Avant de plonger dans les concepts avancés de la programmation, il est impératif de comprendre comment installer Laravel correctement et, surtout, de maîtriser la structure fondamentale d'un projet.

Une installation réussie est la première étape vers la création d'applications robustes et maintenables. La structure du projet, quant à elle, est la carte routière de votre application. Comprendre où chaque élément doit résider est crucial pour une bonne organisation, une collaboration efficace et une facilité de maintenance à long terme.

Dans cette leçon, nous allons explorer en détail :

  • Les prérequis nécessaires pour une installation sans accroc.
  • Les différentes méthodes d'installation de Laravel.
  • La signification et le rôle de chaque répertoire et fichier clé au sein d'un projet Laravel.

Préparez-vous à poser les bases solides de vos futures applications Laravel !

Prérequis Indispensables pour Laravel

Avant de démarrer l'installation de Laravel, assurez-vous que votre environnement de développement local est correctement configuré. Laravel a besoin de certains outils et versions logicielles spécifiques pour fonctionner de manière optimale.

1. PHP et ses Extensions

Laravel est un framework PHP, il est donc évident que PHP doit être installé sur votre système.

  • Version de PHP : Laravel exige une version de PHP relativement récente. Pour Laravel 10 (la version actuelle au moment de la rédaction), PHP 8.1 ou supérieur est requis. Assurez-vous d'utiliser une version compatible pour éviter tout problème.
  • Extensions PHP : De nombreuses extensions PHP sont nécessaires. Les plus courantes incluent :
    • bcmath : Pour les calculs mathématiques de haute précision.
    • ctype : Pour les fonctions de vérification de type de caractères.
    • curl : Pour faire des requêtes HTTP (utile pour des API externes).
    • dom : Pour la manipulation XML/HTML.
    • fileinfo : Pour la détection du type de fichier.
    • mbstring : Pour la manipulation des chaînes de caractères multibytes (encodage UTF-8).
    • openssl : Pour la cryptographie et les connexions sécurisées (HTTPS).
    • pcre : Pour les expressions régulières Perl-compatible.
    • pdo : Pour l'accès aux bases de données via PDO (PHP Data Objects).
    • pdo_mysql (ou pdo_pgsql, pdo_sqlite) : Spécifique au type de base de données que vous utiliserez.
    • tokenizer : Pour l'analyse du code PHP.
    • xml : Pour la manipulation XML.

Vous pouvez vérifier les extensions activées en exécutant php -m dans votre terminal ou en créant un fichier info.php avec <?php phpinfo(); ?> et en l'ouvrant dans votre navigateur.

2. Composer : Le Gestionnaire de Dépendances de PHP

Composer est absolument essentiel pour Laravel. C'est l'outil qui permet de gérer les bibliothèques et les dépendances de votre projet PHP. Il télécharge toutes les librairies nécessaires (y compris Laravel lui-même) et les maintient à jour.

  • Installation de Composer : Rendez-vous sur le site officiel de Composer (getcomposer.org) et suivez les instructions pour votre système d'exploitation. Une fois installé, vous devriez pouvoir exécuter composer dans votre terminal.

3. Base de Données

Bien que vous puissiez démarrer un projet Laravel sans configurer immédiatement une base de données, la plupart des applications backend en ont besoin. Laravel supporte nativement :

  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server

Choisissez votre système de gestion de base de données préféré et assurez-vous qu'il est installé et fonctionne sur votre machine.

4. Node.js et NPM (Optionnel mais Recommandé)

Si votre application Laravel inclura des assets frontend (JavaScript, CSS) que vous souhaitez compiler (par exemple, avec Laravel Mix ou Vite, l'outil de compilation par défaut de Laravel depuis la version 9), vous aurez besoin de Node.js et de son gestionnaire de paquets NPM (Node Package Manager) ou Yarn.

  • Installation de Node.js et NPM : Téléchargez l'installeur depuis le site officiel de Node.js (nodejs.org).

Installation de Laravel : Les Différentes Approches

Il existe deux méthodes principales pour installer un nouveau projet Laravel. Les deux utilisent Composer en coulisses mais offrent une légère différence d'approche.

1. Via l'Installateur Global de Laravel (Recommandé)

L'installateur Laravel est un paquet Composer qui fournit une commande simple et rapide pour créer de nouveaux projets.

Étape 1 : Installer l'Installateur Laravel

Ouvrez votre terminal et exécutez la commande suivante :

composer global require laravel/installer
  • Explication : Cette commande télécharge et installe l'exécutable laravel globalement sur votre système. Cela signifie qu'il sera accessible depuis n'importe quel répertoire, sans avoir à le télécharger pour chaque projet. Assurez-vous que le répertoire des exécutables globaux de Composer (~/.composer/vendor/bin sur Linux/macOS ou %APPDATA%\Composer\vendor\bin sur Windows) est bien dans votre variable d'environnement PATH.

Étape 2 : Créer un nouveau projet Laravel

Une fois l'installateur global configuré, vous pouvez créer un nouveau projet avec une simple commande :

laravel new mon-super-projet
  • Explication : mon-super-projet sera le nom de votre répertoire de projet. Laravel va automatiquement télécharger toutes les dépendances nécessaires et configurer votre nouveau projet dans ce répertoire.

2. Via la Commande composer create-project

C'est la méthode "standard" de Composer pour créer un projet à partir d'un paquet existant. C'est une excellente alternative si vous ne souhaitez pas installer l'installateur global de Laravel, ou si vous travaillez dans un environnement où l'installation globale n'est pas possible.

composer create-project laravel/laravel mon-super-projet
  • Explication :

    • composer create-project : La commande de Composer pour créer un projet.
    • laravel/laravel : Le "vendor" (fournisseur) et le "paquet" du squelette de projet Laravel.
    • mon-super-projet : Le nom du répertoire dans lequel votre nouveau projet sera créé.

    Cette commande télécharge également toutes les dépendances requises et initialise le projet Laravel. Le résultat est identique à l'utilisation de laravel new.

Démarrer le Serveur de Développement Local

Une fois votre projet installé, vous pouvez démarrer un serveur de développement local pour le visualiser dans votre navigateur. Laravel inclut une commande Artisan pratique pour cela.

cd mon-super-projet
php artisan serve
  • Explication :
    • cd mon-super-projet : Navigue dans le répertoire de votre nouveau projet.
    • php artisan serve : Lance un serveur web léger intégré à PHP. Par défaut, il écoute sur http://127.0.0.1:8000. Ouvrez cette adresse dans votre navigateur, et vous devriez voir la page d'accueil par défaut de Laravel. Ce serveur est parfait pour le développement, mais ne doit pas être utilisé en production.

La Structure d'un Projet Laravel : Anatomie d'une Application

Comprendre la structure de répertoires de Laravel est fondamental pour développer efficacement. Laravel suit une convention "convention over configuration", ce qui signifie que de nombreux éléments sont déjà organisés pour vous.

Voici une exploration des répertoires et fichiers les plus importants que vous trouverez dans un projet Laravel fraîchement installé :

.
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── .env.example
├── artisan
├── composer.json
├── composer.lock
├── package.json
├── webpack.mix.js (ou vite.config.js)
└── ...

1. app/

C'est le cœur de votre application. La plupart de votre logique métier résidera ici. Laravel organise ce répertoire en sous-dossiers spécifiques :

  • Console/ : Commandes Artisan personnalisées.
  • Exceptions/ : Gestionnaire d'exceptions personnalisé.
  • Http/ : Contrôleurs (Controllers), Middleware et Requêtes HTTP (formulaires).
    • Controllers/ : Contient les contrôleurs de votre application.
    • Middleware/ : Filtres pour les requêtes HTTP (ex: authentification, CORS).
    • Requests/ : Classes pour valider les requêtes HTTP entrantes.
  • Models/ : Modèles Eloquent qui représentent vos tables de base de données et gèrent les interactions.
  • Providers/ : Service Providers, des classes essentielles pour le démarrage de l'application et l'enregistrement de services.

2. bootstrap/

Contient les fichiers qui amorcent (bootstrap) le framework.

  • app.php : Le fichier qui crée l'instance de l'application Laravel.
  • cache/ : Contient les fichiers de cache générés par le framework pour optimiser les performances.

3. config/

Contient tous les fichiers de configuration de votre application. Chaque fichier gère un aspect spécifique (base de données, sessions, mail, etc.). Les valeurs définies ici peuvent être surchargées par le fichier .env.

  • app.php : Configuration générale de l'application (nom, fuseau horaire, locale, etc.).
  • database.php : Configuration des connexions à la base de données.
  • mail.php : Configuration de l'envoi d'e-mails.
  • services.php : Configuration des services tiers (OAuth, Stripe, etc.).

4. database/

Contient les fichiers liés à la base de données de votre application.

  • migrations/ : Fichiers qui définissent les changements de schéma de votre base de données (création de tables, ajout de colonnes, etc.).
  • seeders/ : Fichiers pour insérer des données initiales ou de test dans votre base de données.
  • factories/ : Fichiers pour générer des fausses données pour les tests ou le développement.

5. public/

Le "point d'entrée" de votre application web. C'est le seul répertoire accessible publiquement par le serveur web.

  • index.php : Le fichier frontal qui initialise l'application Laravel et gère toutes les requêtes entrantes.
  • css/, js/, images/ : Contient vos assets frontend compilés et publics.

Important : Le répertoire racine de votre serveur web (Apache, Nginx) doit pointer vers ce dossier public.

6. resources/

Contient les assets "bruts" qui seront compilés et les vues de votre application.

  • css/ : Fichiers CSS source (ex: Tailwind CSS, Sass).
  • js/ : Fichiers JavaScript source.
  • views/ : Vues Blade de votre application (fichiers HTML avec des extensions .blade.php).

7. routes/

Définit toutes les routes de votre application.

  • web.php : Routes pour l'interface web, gère les sessions, les cookies, la protection CSRF, etc.
  • api.php : Routes pour les API RESTful et sans état (stateless).
  • console.php : Routes qui définissent les commandes Artisan basées sur des closures.
  • channels.php : Routes pour la diffusion d'événements (Laravel Echo).

8. storage/

Contient les fichiers générés par Laravel et votre application, tels que les caches, les journaux, les sessions, les fichiers téléchargés par les utilisateurs, etc. Ce répertoire doit être accessible en écriture par le serveur web.

  • app/ : Fichiers spécifiques à votre application.
  • framework/ : Fichiers générés par le framework (sessions, cache, vues compilées).
  • logs/ : Fichiers de log de l'application.

9. tests/

Contient les tests automatisés de votre application (PHPUnit).

  • Feature/ : Tests de fonctionnalité (simulent les requêtes HTTP).
  • Unit/ : Tests unitaires (testent de petites parties du code de manière isolée).

10. vendor/

Contient toutes les dépendances Composer de votre projet. Ce répertoire est géré par Composer et ne doit pas être modifié manuellement. Il est généralement ignoré par Git (via .gitignore).

11. .env

Le fichier d'environnement. Il contient les configurations spécifiques à l'environnement dans lequel l'application s'exécute (développement, production, staging). Il n'est jamais commité dans le contrôle de version (Git).

APP_NAME="Laravel"
APP_ENV=local
APP_KEY=base64:YOUR_APP_KEY_HERE
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

# Ajoutez d'autres variables d'environnement ici
  • Explication : Ce fichier permet de définir des variables d'environnement pour des configurations sensibles ou spécifiques à l'environnement, comme les clés d'API, les identifiants de base de données, etc. Laravel charge automatiquement ces variables lors du démarrage de l'application et vous pouvez y accéder via la fonction env().

12. composer.json

Le fichier de configuration de Composer pour votre projet. Il liste toutes les dépendances de votre projet et d'autres métadonnées.

{
    "name": "laravel/laravel",
    "description": "A Laravel project.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^8.1",
        "laravel/framework": "^10.0",
        "laravel/tinker": "^2.8"
    },
    "require-dev": {
        "fakerphp/faker": "^1.9.1",
        "laravel/pint": "^1.0",
        "laravel/sail": "^1.18",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^7.0",
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "allow-plugins": {
            "pestphp/pest-plugin": true,
            "php-http/discovery": true
        }
    },
    "minimum-stability": "stable",
    "prefer-stable": true
}
  • Explication :
    • require : Liste les dépendances essentielles à l'exécution de l'application.
    • require-dev : Liste les dépendances nécessaires uniquement pour le développement (tests, outils de linting, etc.).
    • autoload : Définit comment les classes de votre projet doivent être chargées. Par exemple, App\\ est mappé au répertoire app/.
    • config : Options de configuration pour Composer.

13. artisan

Un script en ligne de commande fourni par Laravel. C'est l'interface principale pour interagir avec le framework, exécuter des migrations, créer des contrôleurs, des modèles, des commandes personnalisées, etc.

  • Exemple d'utilisation : php artisan make:controller MaSuperController

Conclusion et Résumé

Félicitations ! Vous avez maintenant une compréhension solide de la façon d'installer Laravel et de la structure fondamentale d'un projet.

Points clés à retenir :

  • Prérequis : Assurez-vous d'avoir PHP (avec les bonnes extensions), Composer et, si nécessaire, une base de données et Node.js/NPM.
  • Installation : Vous pouvez installer Laravel via son installateur global (laravel new) ou directement avec Composer (composer create-project). Les deux méthodes aboutissent au même résultat.
  • Structure du Projet :
    • app/ est le cœur de votre logique métier.
    • public/ est le point d'entrée unique de votre application web.
    • config/ centralise les configurations.
    • database/ gère les migrations et les données de votre base de données.
    • routes/ définit comment les requêtes sont mappées aux actions de votre application.
    • resources/ contient vos assets non compilés et vos vues Blade.
    • .env est crucial pour la configuration spécifique à l'environnement et ne doit pas être versionné.
    • composer.json gère vos dépendances PHP.
    • artisan est votre outil en ligne de commande pour interagir avec Laravel.

La maîtrise de cette structure est le premier pas essentiel vers le développement d'applications Laravel propres, organisées et efficaces. Dans les prochaines leçons, nous plongerons dans les composants spécifiques de Laravel, en tirant parti de cette architecture bien définie.