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.
| Fichier | Rôle |
|---|---|
api.php | Routes pour l'API (préfixe /api) |
web.php | Routes pour le navigateur (session, cookies, CSRF) |
console.php | Commandes Artisan personnalisées |
channels.php | Canaux 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 :
| Fichier | Contenu |
|---|---|
app.php | Config générale de l'app (nom, timezone, locale...) |
database.php | Connexion à la BDD (MySQL, SQLite, PostgreSQL...) |
auth.php | Système d'authentification |
cors.php | Cross-Origin Resource Sharing |
sanctum.php | Configuration 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 :
| Commande | Effet |
|---|---|
php artisan serve | Lance le serveur de développement |
php artisan make:model | Crée un modèle |
php artisan make:controller | Crée un contrôleur |
php artisan make:migration | Crée une migration |
php artisan migrate | Exécute les migrations |
php artisan route:list | Affiche toutes les routes |
php artisan tinker | REPL interactif (test en direct) |
php artisan db:seed | Remplit la BDD avec des données fictives |
Bonnes pratiques dès le départ ✅
- .env ne doit JAMAIS être commité sur Git (il est déjà dans
.gitignore) - Ne modifie JAMAIS le dossier
vendor/— c'est géré par Composer - Crée toujours les fichiers via Artisan plutôt qu'à la main (
php artisan make:...) - Nomme tes tables en anglais, au pluriel, snake_case (
users,password_reset_tokens) - Garde les contrôleurs légers — la logique métier complexe va dans des classes dédiées
Pièges fréquents 🚨
| Piège | Explication |
|---|---|
❌ Modifier vendor/ | Les modifications seront écrasées par composer update |
❌ Committer .env | Tu exposes tes mots de passe et clés API |
| ❌ Ignorer les migrations | Changer la BDD à la main sans migration = cauchemar en équipe |
❌ Tout mettre dans routes/api.php | Utilise les contrôleurs pour organiser ton code |
❌ Oublier php artisan storage:link | Les fichiers uploadés ne seront pas accessibles publiquement |
Exercices pour toi 🎯
- Pratique : Lance
composer create-project laravel/laravel test-projectsur ta machine. Ouvre le dossier dans ton éditeur. - Exploration : Ouvre
routes/api.phpet ajoute une route GET/pingqui retourne"pong". - Artisan : Exécute
php artisan route:list— que vois-tu ? - Migration : Crée une migration
create_posts_tableavecphp artisan make:migration create_posts_table. Ajoute-y les colonnestitle(string) etbody(text). Lancephp artisan migrate. - 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- 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.