Laravel : débuter avec le framework PHP
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 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 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.