0 XP
?
API REST et Backend avec Laravel/Installation et structure d'un projet Laravel
Débutant50 min30 XP

Objectifs de cette leçon

  • Installer Laravel avec Composer
  • Configurer l'environnement de développement
  • Comprendre la structure des dossiers

Installation et structure d'un projet Laravel 📁

Créer un nouveau projet Laravel

Pour créer un projet Laravel, on utilise Composer (le gestionnaire de paquets PHP) avec une seule commande :

composer create-project laravel/laravel mon-app

Cette commande :

  • Télécharge la dernière version stable de Laravel
  • Installe toutes les dépendances nécessaires
  • Génère la clé d'application (APP_KEY)
  • Crée la structure complète du projet

⏳ Selon ta connexion, ça prend entre 30 secondes et 2 minutes.


L'arbre du projet Laravel 🌳

Une fois le projet créé, voici les dossiers et fichiers clés que tu dois connaître :

mon-app/
├── app/
│   ├── Http/
│   │   └── Controllers/    ← La logique métier 🎯
│   ├── Models/              ← Les modèles Eloquent 🗄️
│   └── Providers/           ← Les fournisseurs de services
├── bootstrap/               ← Le démarrage de Laravel
├── config/                  ← Toute la configuration ⚙️
├── database/
│   └── migrations/          ← Versionnement de la BDD 📋
├── public/                  ← Le point d'entrée (index.php)
├── resources/
│   ├── js/                  ← Assets JavaScript
│   └── views/               ← Templates Blade
├── routes/
│   ├── api.php              ← Routes API 🛣️
│   ├── web.php              ← Routes navigateur
│   └── console.php          ← Commandes Artisan
├── storage/                 ← Logs, cache, fichiers uploadés
├── tests/                   ← Tests unitaires et fonctionnels
├── vendor/                  ← Dépendances Composer (ne pas toucher)
├── .env                     ← Variables d'environnement (⚠️ jamais sur Git)
├── artisan                  ← CLI magique ⚡
└── composer.json            ← Dépendances PHP

Présentation détaillée des dossiers clés 🔍

🛣️ routes/

C'est le point d'entrée de toutes les requêtes HTTP. Tu déclares ici les URLs que ton application va écouter.

FichierRôle
api.phpRoutes pour l'API (préfixe /api)
web.phpRoutes pour le navigateur (session, cookies, CSRF)
console.phpCommandes Artisan personnalisées
channels.phpCanaux de broadcasting (WebSockets)
// routes/api.php
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::get('/users/{id}', [UserController::class, 'show']);

🎯 app/Http/Controllers/

Les contrôleurs contiennent la logique métier. Chaque méthode = une action.

php artisan make:controller UserController
class UserController extends Controller
{
    public function index()
    {
        return User::all(); // 👈 retourne tous les utilisateurs
    }
}

🗄️ app/Models/

Les modèles Eloquent représentent les tables de la base de données.

php artisan make:model User
class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}

📋 database/migrations/

Les migrations sont le versionnement de la BDD. Chaque fichier décrit une modification du schéma.

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamps();
});
php artisan migrate   # Applique toutes les migrations en attente
php artisan migrate:rollback  # Annule la dernière migration

⚙️ config/

Tous les réglages de l'application centralisés dans ce dossier :

FichierContenu
app.phpConfig générale de l'app (nom, timezone, locale...)
database.phpConnexion à la BDD (MySQL, SQLite, PostgreSQL...)
auth.phpSystème d'authentification
cors.phpCross-Origin Resource Sharing
sanctum.phpConfiguration de Sanctum (API tokens)

Les valeurs sensibles (mots de passe, clés API) se définissent dans .env et sont lues avec env().

artisan

L'interface en ligne de commande de Laravel. Les commandes les plus utiles :

CommandeEffet
php artisan serveLance le serveur de développement
php artisan make:modelCrée un modèle
php artisan make:controllerCrée un contrôleur
php artisan make:migrationCrée une migration
php artisan migrateExécute les migrations
php artisan route:listAffiche toutes les routes
php artisan tinkerREPL interactif (test en direct)
php artisan db:seedRemplit la BDD avec des données fictives

Bonnes pratiques dès le départ ✅

  1. .env ne doit JAMAIS être commité sur Git (il est déjà dans .gitignore)
  2. Ne modifie JAMAIS le dossier vendor/ — c'est géré par Composer
  3. Crée toujours les fichiers via Artisan plutôt qu'à la main (php artisan make:...)
  4. Nomme tes tables en anglais, au pluriel, snake_case (users, password_reset_tokens)
  5. Garde les contrôleurs légers — la logique métier complexe va dans des classes dédiées

Pièges fréquents 🚨

PiègeExplication
❌ Modifier vendor/Les modifications seront écrasées par composer update
❌ Committer .envTu exposes tes mots de passe et clés API
❌ Ignorer les migrationsChanger la BDD à la main sans migration = cauchemar en équipe
❌ Tout mettre dans routes/api.phpUtilise les contrôleurs pour organiser ton code
❌ Oublier php artisan storage:linkLes fichiers uploadés ne seront pas accessibles publiquement

Exercices pour toi 🎯

  1. Pratique : Lance composer create-project laravel/laravel test-project sur ta machine. Ouvre le dossier dans ton éditeur.
  2. Exploration : Ouvre routes/api.php et ajoute une route GET /ping qui retourne "pong".
  3. Artisan : Exécute php artisan route:list — que vois-tu ?
  4. Migration : Crée une migration create_posts_table avec php artisan make:migration create_posts_table. Ajoute-y les colonnes title (string) et body (text). Lance php artisan migrate.
  5. Défi : Dans le simulateur ci-dessous, clique sur chaque dossier de l'arborescence pour découvrir son rôle interactif.

⚡ Simulateur — Structure d'un projet Laravel

Étape 1/7
📝 Pseudo-code
1# Installation et structure d'un projet Laravel
2composer create-project laravel/laravel mon-app # ⬅ cliquer pour créer
3
4# Arbre du projet (dossiers clés)
5📁 routes/ # ⬅ cliquer pour explorer
6📁 app/Http/Controllers/ # ⬅ cliquer pour explorer
7📁 app/Models/ # ⬅ cliquer pour explorer
8📁 database/migrations/ # ⬅ cliquer pour explorer
9📁 config/ # ⬅ cliquer pour explorer
10📁 resources/views/ # ⬅ cliquer pour explorer
11📄 artisan # ⬅ cliquer pour les commandes
📁 Structure Laravel
📦 Installation
$ composer create-project laravel/laravel mon-app
✅ Projet créé avec succès
Composer crée la structure complète du projet automatiquement.
📁 Arborescence
🛣️routes/
api.phpweb.php
🎯app/Http/Controllers/
UserController.php
🗄️app/Models/
User.php
📋database/migrations/
xxxx_create_users_table.php
⚙️config/
app.phpdatabase.php
artisan
CLI
💡 Structure MVC de Laravel
  • routes/ = point d'entrée de toutes les requêtes
  • Controllers/ = logique métier
  • Models/ = interaction avec la BDD
  • migrations/ = versionnement du schéma
  • config/ = réglages centralisés
  • artisan = le couteau suisse en CLI

Composer télécharge Laravel, installe les dépendances et génère la structure initiale du projet.