Qu’est-ce que la classe Fluent
La classeFluent est une classe utilitaire générique qui permet de traiter un tableau comme un objet. Implémentée dans Illuminate\Support\Fluent, elle existe depuis les premières versions de Laravel mais n’est presque pas mentionnée dans la documentation officielle.
En interne, elle gère un tableau via des propriétés et permet l’accès en lecture/écriture façon propriétés via les méthodes magiques (__get / __set / __call).
Création d’instance
Constructeur
Méthode fabrique make()
Fonction helper fluent()
Laravel 11 a ajouté le helperfluent(). Il est équivalent à Fluent::make().
Accès aux propriétés
Lecture/écriture dynamique des propriétés
Chaînage de méthodes
Grâce à la méthode magique__call, l’appel d’une méthode inexistante définit une propriété. La méthode retourne $this, ce qui permet le chaînage.
Principales méthodes
get() — accès avec la notation par point
set() — écriture avec la notation par point
fill() — définir plusieurs propriétés à la fois
all() — récupérer toutes les propriétés sous forme de tableau
scope() — convertir une valeur imbriquée en un nouveau Fluent
value() — valeur par défaut dynamique via un callback
Manipulations de tableau
toArray() — conversion en tableau
getAttributes() — accès direct aux attributs internes
Interface ArrayAccess
Fluent implémenteArrayAccess, donc il se manipule comme un tableau.
Interface IteratorAggregate
Fluent peut être itéré via foreach.Traitement JSON
toJson() — conversion en chaîne JSON
toPrettyJson() — JSON formaté
Interface JsonSerializable
Fluent implémenteJsonSerializable : json_encode() peut donc le convertir directement.
Vérification d’état
isEmpty() / isNotEmpty()
Trait Conditionable
Fluent utilise le traitConditionable et prend en charge le traitement conditionnel.
when() / unless() permettent d’écrire de manière fluide une configuration conditionnelle.
Trait Macroable
Fluent utilise également le traitMacroable, ce qui permet d’ajouter dynamiquement des méthodes.
Cas d’usage pratiques
Constructeur de réponse API
Constructeur de configuration
Validation et transformation des paramètres de requête
Combinaison Model et Fluent
Normalisation des données de formulaire
Comparaison avec d’autres classes
Fluent vs Array
Fluent vs Model
Détails d’implémentation interne
__call utilise le nom de la méthode comme clé et définit la valeur, puis retourne $this. C’est ce qui rend possible le chaînage de méthodes.
Étapes suivantes
Classe Collection
Approfondissez la classe Collection qui manipule plusieurs éléments.
Trait Conditionable
Apprenez à écrire des traitements conditionnels fluides avec le trait Conditionable.
Trait Macroable
Apprenez à ajouter dynamiquement des méthodes à une classe existante avec le trait Macroable.