Skip to main content

Qu’est-ce que la classe Fluent

La classe Fluent 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).
Laravel 11 a ajouté le helper fluent() et la classe Fluent a été enrichie. C’est le bon moment pour tirer parti de cette excellente classe.

Création d’instance

Constructeur

Méthode fabrique make()

Fonction helper fluent()

Laravel 11 a ajouté le helper fluent(). 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.
Ce mécanisme permet de définir des valeurs via une API fluide (Fluent Interface) au lieu d’un tableau.

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

Cela permet de manipuler un tableau imbriqué comme un autre objet 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émente ArrayAccess, 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émente JsonSerializable : json_encode() peut donc le convertir directement.

Vérification d’état

isEmpty() / isNotEmpty()

Trait Conditionable

Fluent utilise le trait Conditionable et prend en charge le traitement conditionnel.
Les méthodes when() / unless() permettent d’écrire de manière fluide une configuration conditionnelle.

Trait Macroable

Fluent utilise également le trait Macroable, 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

Si aucune macro n’est enregistrée, la méthode __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.
Fluent utilise les traits suivants, chacun fournissant des fonctionnalités différentes :
  • Conditionable — traitement conditionnel avec when() / unless()
  • InteractsWithData — méthodes de manipulation de données comme data()
  • Macroable — ajout dynamique 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.
Dernière modification le 13 juillet 2026