Skip to main content

Vue d’ensemble

Cette section couvre l’implémentation interne de Laravel que la documentation officielle seule ne suffit pas à saisir, ainsi que des sujets avancés spécifiques au développement de packages. En parcourant le code source, elle présente des patterns de conception concrets et des méthodes d’extension.

Développement de packages

Développement de packages Laravel

Des fondations du développement de packages autour du service provider jusqu’à la publication de configurations, vues et migrations.

Tester des packages Laravel avec Orchestra Testbench

Construisez un environnement de test avec Orchestra Testbench et validez service providers, façades et base de données.

Développer un package avec Testbench Workbench

Créez un environnement de vérification proche d’une vraie application, avec routes, migrations et services démarrés.

Gestion de la compatibilité de versions de package

Stratégie de maintenance de package face aux montées de version de Laravel et PHP, et matrices de test GitHub Actions.

GeneratorCommand — implémenter des commandes make: personnalisées

Découvrez comment implémenter des commandes make: propres à votre package en héritant de GeneratorCommand.

Fusion et cache de la configuration des packages

Comprenez la différence entre fusion superficielle et remplacement récursif, et maintenez la configuration en tenant compte des fichiers publiés et du cache de configuration.

Publier et mettre à jour les migrations d'un package

La différence entre publication et chargement direct, les risques liés au changement d’horodatage et à la republication, et les changements de schéma pour les utilisateurs existants.

Surcharger et mettre à jour les vues d'un package

L’ordre de recherche des vues, la compatibilité des templates publiés et une procédure de mise à jour qui tient compte du cache Blade.

Enregistrement et cache des routes d'un package

La séparation des middlewares et des noms, et le lien entre les changements de configuration et la recréation du cache des routes.

Cache d'un package et intégration à optimize

Découvrez les clés d’enregistrement des tâches personnalisées, les exclusions, l’ordre d’exécution et la gestion des échecs.

Assets publics d'un package et mises à jour

Découvrez la distribution de JavaScript et de CSS, la portée de sélection des tags, l’écrasement et la republication lors des mises à jour Composer.

Surcharge et mise à jour des traductions d'un package

Découvrez la surcharge partielle des traductions PHP, les clés partagées des traductions JSON et comment mettre à jour sans casser les traductions publiées.

Hooks de résolution des services d'un package

Découvrez la configuration différée avec callAfterResolving(), son application aux services déjà résolus et les précautions liées à l’idempotence.

Enregistrement et mise en cache des écouteurs d'événements d'un package

Découvrez la différence entre enregistrement explicite et découverte automatique, comment éviter le double enregistrement, ainsi que la portée de event:cache et sa vérification lors des mises à jour.

Conception du cycle de vie des services d'un package

Découvrez l’implémentation interne de scoped, les dépendances conservées par les singletons et l’isolation de l’état dans les workers de longue durée.

Extensions Blade d'un package et cache de compilation

Découvrez le moment d’exécution des directives et conditions personnalisées, ainsi que la gestion du cache lors des mises à jour.

Intérieur du framework

Structure d'application depuis Laravel 11

Vision d’ensemble du Slim Application Skeleton et implémentation interne, de Application::configure() à ApplicationBuilder.

Trait Macroable

Fonctionnement et patterns d’utilisation du trait Macroable pour ajouter des méthodes personnalisées aux classes Laravel existantes.

Trait Conditionable

Implémentation interne des méthodes when()/unless() et patterns pour concevoir des API fluides.

Illuminate\Support\Manager — anatomie du système de drivers

La classe cœur du système de drivers hérité de Laravel 4.0. De l’enregistrement d’un driver personnalisé au MultipleInstanceManager.

Pattern Pipeline

Fonctionnement de la classe Illuminate\Pipeline\Pipeline et pattern pour chaîner plusieurs étapes de traitement.

Trait InteractsWithData

Conception d’un trait pour doter vos propres classes d’une API d’accès aux données lors du développement d’un package.

Helper tap() et trait Tappable

Utilisation et patterns d’implémentation du helper tap() et du trait Tappable de Laravel.

Attributs PHP

Comment utiliser les attributs PHP introduits et renforcés dans Laravel 13 pour déclarer la configuration des jobs et modèles.

Implémentation interne du helper once()

Fonctionnement du cache basé sur WeakMap dans les classes Once et Onceable, et application dans PreventsCircularRecursion d’Eloquent.

Eloquent en profondeur

Casts personnalisés d'Eloquent

Casts personnalisés implémentant l’interface CastsAttributes. Pattern Value Object, casts entrants et Castables.

Observers Eloquent et événements de modèle

Mécanisme des événements déclenchés par les modèles Eloquent et gestion centralisée via des classes Observer.

Scopes Eloquent

Fonctionnement des scopes locaux et globaux. De l’implémentation interne de SoftDeletingScope aux cas d’usage pratiques.

Collection Deep Dive

Décryptage de l’implémentation des Collections Laravel : histoire, structure de classes, PHPDoc Generics et méthode de lecture.

Messages d'ordre supérieur des collections

Fonctionnement et usage pratique des messages d’ordre supérieur (Higher-order Messages) des collections.

MCP et IA

Créer un serveur MCP avec Laravel

Construire un serveur MCP prêt pour la production avec le package laravel/mcp. De l’implémentation d’outils, ressources et prompts jusqu’à l’authentification.

Créer un provider personnalisé pour l'AI SDK

Décryptage du code source de Laravel AI SDK et implémentation d’un provider personnalisé pour un service IA non pris en charge nativement.

Créer un agent personnalisé Boost

Plongée dans l’architecture d’extension de Laravel Boost et création d’un agent personnalisé.

Authentification, validation et autres

Implémenter un guard d'authentification personnalisé

Comment créer un guard d’authentification personnalisé en implémentant les interfaces Guard et StatefulGuard, expliqué au niveau du code source.

Règles de validation personnalisées

Comment étendre la validation avec des objets de règle ou des closures, jusqu’à leur implémentation interne.

Personnalisation de la limitation de débit

Plongée dans la façade RateLimiter et implémentation de limitations personnalisées par utilisateur, plan ou adresse IP.

Tests avancés avec Pest

Utilisation avancée de Pest : Expectation API, datasets, fakes et Mockery, présentée de façon structurée.
最終更新日 2026年10月17日