> Laravel tutoriel pour débutants : installation via Composer et Artisan, routes, contrôleurs, vues Blade, ORM Eloquent, migrations et pour quels projets choisir Laravel.

*Source : https://coder-studio.com/tutoriels/laravel-guide/*

---

[// PHP](https://coder-studio.com/tutoriels/)

# Laravel : débuter avec le framework PHP

Par **Kévin Papot** · publié le 9 avril 2026

Laravel est le framework PHP le plus utilisé pour construire des applications web modernes. Sa promesse : offrir une structure claire et des outils prêts à l’emploi (routage, base de données, moteur de gabarits, authentification) pour que vous écriviez de la logique métier plutôt que de la plomberie technique. Sa syntaxe expressive et sa documentation soignée en font une porte d’entrée idéale vers le développement PHP professionnel.

Ce tutoriel Laravel couvre pas à pas l’essentiel pour démarrer : installation, routes, contrôleurs, vues Blade, ORM Eloquent et migrations, avec du code réel à chaque étape.

## Prérequis et installation

Laravel repose sur **Composer**, le gestionnaire de dépendances de PHP, et nécessite une version récente de PHP. Vérifiez d’abord que les deux sont disponibles.

```
php --version       # PHP 8.2 ou supérieur recommandé
composer --version
```

On crée ensuite un nouveau projet en une commande. Composer télécharge Laravel et toutes ses dépendances dans le dossier indiqué.

```
composer create-project laravel/laravel mon-projet
cd mon-projet
```

## Lancer le serveur avec Artisan

Laravel fournit **Artisan**, un outil en ligne de commande qui accompagne tout le développement. Sa première utilité est de démarrer un serveur local de test.

```
php artisan serve
# L'application est accessible sur http://127.0.0.1:8000
```

Artisan sert à bien plus que lancer le serveur : il génère du code, gère la base de données et automatise les tâches répétitives. On peut lister toutes ses commandes :

```
php artisan list
```

## Les routes

Une **route** associe une URL à du code. Dans Laravel, les routes web se définissent dans `routes/web.php`. La forme la plus simple renvoie directement une réponse.

```
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return 'Bonjour depuis Laravel';
});
```

On récupère des segments dynamiques de l’URL grâce aux paramètres, indiqués entre accolades.

```
Route::get('/article/{id}', function ($id) {
    return "Affichage de l'article n°" . $id;
});
```

Laravel gère les différents verbes HTTP par des méthodes dédiées : `Route::get()`, `Route::post()`, `Route::put()`, `Route::delete()`. On peut aussi nommer une route pour la référencer ailleurs sans coder l’URL en dur.

```
Route::get('/contact', function () {
    return view('contact');
})->name('contact');
```

## Les contrôleurs

Écrire toute la logique dans le fichier de routes devient vite illisible. Les **contrôleurs** regroupent le traitement des requêtes dans des classes dédiées. On en génère un avec Artisan.

```
php artisan make:controller ArticleController
```

La commande crée `app/Http/Controllers/ArticleController.php`. On y ajoute des méthodes qui traitent chacune une action.

```
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index()
    {
        return "Liste de tous les articles";
    }

    public function show($id)
    {
        return "Détail de l'article " . $id;
    }
}
```

On relie ensuite la route au contrôleur en indiquant la classe et la méthode.

```
use App\Http\Controllers\ArticleController;

Route::get('/articles', [ArticleController::class, 'index']);
Route::get('/articles/{id}', [ArticleController::class, 'show']);
```

## Les vues Blade

**Blade** est le moteur de gabarits de Laravel. Il permet d’écrire du HTML mêlé à une syntaxe concise pour afficher des données et gérer la logique d’affichage. Les vues se placent dans `resources/views` avec l’extension `.blade.php`.

```
{{-- resources/views/article.blade.php --}}
<!DOCTYPE html>
<html lang="fr">
<head>
    <title>{{ $titre }}</title>
</head>
<body>
    <h1>{{ $titre }}</h1>
    <p>{{ $contenu }}</p>
</body>
</html>
```

La double accolade `{{ }}` affiche une variable en l’échappant automatiquement (protection contre les injections HTML). Depuis un contrôleur, on renvoie la vue avec `view()` en lui passant les données.

```
public function show($id)
{
    return view('article', [
        'titre'   => 'Débuter avec Laravel',
        'contenu' => 'Contenu de l\'article...',
    ]);
}
```

Blade offre aussi des directives pour les structures de contrôle : boucles, conditions et héritage de gabarits.

```
@if ($articles->isEmpty())
    <p>Aucun article pour le moment.</p>
@else
    <ul>
        @foreach ($articles as $article)
            <li>{{ $article->titre }}</li>
        @endforeach
    </ul>
@endif
```

## Les migrations

Les **migrations** décrivent la structure de la base de données en PHP plutôt qu’en SQL brut. Elles versionnent votre schéma : chaque évolution est un fichier qu’on peut appliquer ou annuler, et partager avec l’équipe. On génère une migration avec Artisan.

```
php artisan make:migration create_articles_table
```

Le fichier créé dans `database/migrations` contient deux méthodes : `up()` (appliquer) et `down()` (annuler).

```
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();
            $table->string('titre');
            $table->text('contenu');
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('articles');
    }
};
```

On applique ensuite toutes les migrations en attente :

```
php artisan migrate
```

Laravel crée la table `articles` avec une clé primaire auto-incrémentée (`id()`) et deux colonnes de dates automatiques (`created_at` et `updated_at` via `timestamps()`).

## L’ORM Eloquent

**Eloquent** est l’ORM (mapping objet-relationnel) de Laravel. Il permet de manipuler les lignes de la base comme des objets PHP, sans écrire de SQL. Chaque table est représentée par une classe appelée modèle. On la génère avec Artisan.

```
php artisan make:model Article
```

Le modèle, dans `app/Models/Article.php`, se relie par convention à la table `articles` (pluriel du nom de classe).

```
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $fillable = ['titre', 'contenu'];
}
```

À partir de là, les opérations sur la base deviennent limpides.

```
use App\Models\Article;

// Créer
$article = Article::create([
    'titre'   => 'Mon premier article',
    'contenu' => 'Bonjour !',
]);

// Lire
$tous     = Article::all();
$un       = Article::find(1);
$recents  = Article::where('titre', 'like', 'Laravel%')->get();

// Mettre à jour
$article->titre = 'Titre modifié';
$article->save();

// Supprimer
$article->delete();
```

Eloquent gère aussi les relations entre modèles (un article possède plusieurs commentaires, par exemple) par des méthodes déclaratives. C’est l’un des grands atouts du framework. Si le principe d’un ORM vous est encore flou, notre [guide des ORM](https://coder-studio.com/tutoriels/orm-guide/) en explique les fondements avant de plonger dans Eloquent.

## Pour quels projets choisir Laravel ?

Laravel brille sur les applications web à base de données : sites de gestion, tableaux de bord, API, places de marché, SaaS. Son écosystème complet (authentification, files d’attente, tests, notifications) le rend particulièrement productif pour un produit qui doit évoluer dans le temps.

À l’inverse, pour un simple site vitrine statique, un framework complet serait surdimensionné. Et si votre projet exige une architecture d’entreprise très structurée, il peut être pertinent de comparer avec une autre référence de l’écosystème PHP : notre article sur [Symfony](https://coder-studio.com/tutoriels/symfony-framework-php/) détaille cette alternative et ses cas d’usage. Les deux frameworks partagent d’ailleurs des composants communs, si bien que les compétences se transfèrent en partie de l’un à l’autre.

## En résumé

Débuter avec Laravel tient en quelques briques : Composer installe le projet, Artisan génère le code et lance le serveur, les routes relient les URL au traitement, les contrôleurs organisent la logique, Blade rend les vues, les migrations versionnent le schéma et Eloquent manipule les données sans SQL. Cet ensemble cohérent explique la popularité du framework : une fois ces concepts en main, vous disposez de tout le nécessaire pour construire une application web complète.

## À lire ensuite

-   [Symfony : le framework PHP structuré](https://coder-studio.com/tutoriels/symfony-framework-php/)
-   [Qu’est-ce qu’un ORM ? Le guide](https://coder-studio.com/tutoriels/orm-guide/)
-   [PHP : le guide pour débuter](https://coder-studio.com/tutoriels/php-guide-debutant/)
