doganddev
Accueil Blog Boutique

Guide complet du framework Laravel

DOG&DEV · 26/01/2025

Optimisation Système Réplication
Guide complet du framework Laravel

Guide complet du framework Laravel

Laravel est un framework PHP moderne qui simplifie le développement web en automatisant les tâches répétitives. Ce guide complet couvre l'architecture MVC, Artisan CLI, Eloquent ORM, Blade, les fonctionnalités clés, les cas d'usage et les avantages par rapport aux alternatives.

Prérequis

  • Connaissances de base en PHP
  • Compréhension des concepts MVC (Model-View-Controller)
  • Environnement de développement (PHP 8.1+, Composer)

Qu'est-ce que Laravel ?

Laravel est un framework PHP open-source créé par Taylor Otwell. Il suit le pattern MVC et offre :

  • Routing élégant et expressif
  • ORM Eloquent pour les bases de données
  • Moteur de template Blade
  • CLI Artisan pour l'automatisation
  • Système d'authentification intégré
  • Gestion des migrations de base de données

Architecture MVC de Laravel

Laravel suit le pattern Model-View-Controller :

Model (Modèle)

Gère les données et la logique métier. Les modèles Eloquent représentent les tables de base de données.

// app/Models/User.php
class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
    
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

View (Vue)

Gère la présentation. Blade est le moteur de template de Laravel.

{{-- resources/views/users/index.blade.php --}}
@foreach($users as $user)
    <p>{{ $user->name }}</p>
@endforeach

Controller (Contrôleur)

Gère la logique de l'application et coordonne les modèles et les vues.

// app/Http/Controllers/UserController.php
class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('users.index', compact('users'));
    }
}

Artisan CLI : automatisation des tâches

Artisan est l'interface en ligne de commande de Laravel.

Commandes essentielles

# Créer un nouveau projet
composer create-project laravel/laravel mon-projet

# Lancer le serveur de développement
php artisan serve

# Créer un modèle
php artisan make:model Post

# Créer un contrôleur
php artisan make:controller PostController

# Créer une migration
php artisan make:migration create_posts_table

# Exécuter les migrations
php artisan migrate

# Créer un seeder
php artisan make:seeder PostSeeder

# Exécuter les seeders
php artisan db:seed

Commandes utiles

# Lister toutes les commandes
php artisan list

# Aide sur une commande
php artisan help migrate

# Vider le cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# Mode maintenance
php artisan down
php artisan up

Eloquent ORM : gestion des bases de données

Eloquent transforme les tables de base de données en objets PHP.

Relations

// One-to-Many
class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

// Many-to-Many
class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

Requêtes Eloquent

// Récupérer tous les utilisateurs
$users = User::all();

// Avec conditions
$activeUsers = User::where('active', true)->get();

// Eager loading (évite N+1)
$users = User::with('posts')->get();

// Agrégations
$count = User::count();
$avg = Post::avg('views');

Pour les bonnes pratiques : laravel-best-practices.

Blade : moteur de template

Blade offre une syntaxe claire et puissante pour les vues.

Syntaxe de base

{{-- Variables --}}
{{ $name }}

{{-- Non échappé (HTML) --}}
{!! $htmlContent !!}

{{-- Structures conditionnelles --}}
@if($condition)
    <p>Condition vraie</p>
@else
    <p>Condition fausse</p>
@endif

{{-- Boucles --}}
@foreach($items as $item)
    <p>{{ $item->name }}</p>
@endforeach

Héritage de templates

{{-- resources/views/layouts/app.blade.php --}}
<html>
<head>
    <title>@yield('title')</title>
</head>
<body>
    @yield('content')
</body>
</html>

{{-- resources/views/pages/home.blade.php --}}
@extends('layouts.app')

@section('title', 'Accueil')

@section('content')
    <h1>Bienvenue</h1>
@endsection

Pour les directives Blade avancées : blade-directives-laravel.

Fonctionnalités clés

Routing

// routes/web.php
Route::get('/', function () {
    return view('welcome');
});

Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::resource('posts', PostController::class);

Middleware

Intercepte les requêtes avant qu'elles n'atteignent les contrôleurs :

// Authentification
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
});

Validation

$validated = $request->validate([
    'email' => 'required|email|unique:users',
    'password' => 'required|min:8',
]);

Authentification

Laravel inclut un système d'authentification complet :

php artisan make:auth

Pour la sécurité : laravel-security-checklist.

Cas d'usage

Applications web classiques

  • Sites vitrine avec gestion de contenu
  • Blogs et CMS
  • Portfolios interactifs

Applications métier

  • CRM et gestion de clients
  • Outils de gestion de projet
  • Plateformes e-learning

APIs REST

Laravel excelle pour créer des APIs REST :

Route::apiResource('posts', PostController::class);

Pour les APIs : laravel-api-inspector.

E-commerce

  • Boutiques en ligne (avec packages comme Laravel Cashier)
  • Gestion de commandes et inventaire
  • Systèmes de paiement

Avantages de Laravel

Productivité

  • Syntaxe expressive et intuitive
  • Documentation excellente et communauté active
  • Écosystème riche (packages Composer)

Sécurité

  • Protection CSRF intégrée
  • Validation des entrées
  • Protection SQL injection via Eloquent
  • Chiffrement des données sensibles

Pour éviter les erreurs : laravel-security-mistakes.

Évolutivité

  • Architecture modulaire
  • Support des queues pour les tâches asynchrones
  • Cache intégré (Redis, Memcached)
  • Optimisations de requêtes (eager loading, pagination)

Comparaison avec d'autres frameworks

Laravel vs Symfony

  • Laravel : plus opinionné, développement plus rapide
  • Symfony : plus flexible, courbe d'apprentissage plus raide

Laravel vs CodeIgniter

  • Laravel : moderne, fonctionnalités avancées intégrées
  • CodeIgniter : plus léger, mais moins de fonctionnalités natives

Déploiement

Hébergement

Laravel peut être déployé sur :

  • VPS : contrôle total, performance optimale
  • Hébergement partagé : possible mais limité
  • Cloud : scalable (AWS, DigitalOcean, etc.)

Pour Plesk : laravel-plesk-website.

Configuration production

# Optimiser pour la production
php artisan config:cache
php artisan route:cache
php artisan view:cache

# Mode production
APP_ENV=production
APP_DEBUG=false

Dépannage

Symptôme Cause possible Correctif
Erreur 500 Problème de permissions, cache Vérifier permissions storage/ ; php artisan cache:clear
Routes non trouvées Cache de routes obsolète php artisan route:clear ; php artisan route:cache
Erreurs de migration Base de données non synchronisée php artisan migrate:fresh (⚠️ supprime les données)
Performances lentes N+1 queries, pas de cache Utiliser with() ; activer le cache ; laravel-boost

Bonnes pratiques

  • Fat models, skinny controllers : logique métier dans les modèles
  • FormRequest pour la validation
  • Services pour la logique complexe
  • Scopes pour réutiliser les requêtes
  • Tests : couvrir les fonctionnalités critiques

Voir laravel-best-practices pour un guide complet.

Ressources


Cet article s'inscrit dans notre série de guides développement web. Pour une application sur-mesure, contact.

Commentaires (0)

Laisser un commentaire