Skip to main content

Wat is de Fluent-klasse?

De Fluent-klasse is een generieke utilityklasse waarmee je een array als een object kunt behandelen. De klasse is geïmplementeerd in Illuminate\Support\Fluent en bestaat al sinds vroege versies van Laravel, maar wordt in de officiële documentatie nauwelijks genoemd. Intern beheert de klasse de array als property en realiseert die via magic methods (__get / __set / __call) het lezen en schrijven alsof het properties zijn.
In Laravel 11 is de fluent()-helper toegevoegd en is de Fluent-klasse functioneel versterkt — juist nu een uitstekende klasse om te benutten.

Een instantie maken

Constructor

De factorymethode make()

De helperfunctie fluent()

In Laravel 11 is de fluent()-helper toegevoegd. Deze is gelijk aan Fluent::make().

Toegang tot properties

Dynamische properties lezen en schrijven

Method chaining

Dankzij de magic method __call wordt bij het aanroepen van een niet-bestaande methode een property gezet. De methode geeft $this terug, dus je kunt chainen.
Met dit mechanisme kun je waarden instellen via een vloeiende API (fluent interface) in plaats van een array.

Belangrijkste methodes

get() — toegang via puntnotatie

set() — zetten via puntnotatie

fill() — meerdere properties in één keer zetten

all() — alle properties als array ophalen

scope() — geneste waarden omzetten naar een nieuwe Fluent

Zo kun je een geneste array behandelen als een apart Fluent-object.

value() — standaardwaarde dynamisch opgeven via een callback

Arraybewerkingen

toArray() — omzetten naar een array

getAttributes() — directe toegang tot de interne attributen

De ArrayAccess-interface

Fluent implementeert ArrayAccess, dus je kunt ermee werken als met een array.

De IteratorAggregate-interface

Over een Fluent kun je met foreach itereren.

JSON-verwerking

toJson() — omzetten naar een JSON-string

toPrettyJson() — omzetten naar geformatteerde JSON

De JsonSerializable-interface

Fluent implementeert JsonSerializable, dus je kunt de klasse direct omzetten met json_encode().

Toestand controleren

isEmpty() / isNotEmpty()

De Conditionable-trait

Fluent gebruikt de Conditionable-trait en ondersteunt dus conditionele verwerking.
Met de methodes when() / unless() schrijf je configuratie op basis van voorwaarden op een vloeiende manier.

De Macroable-trait

Fluent gebruikt ook de Macroable-trait, waarmee je dynamisch methodes kunt toevoegen.

Praktische use cases

Een API-responsebuilder

Een configbuilder

Requestparameters valideren en omzetten

Modellen combineren met Fluent

Formulierdata normaliseren

Vergelijking met andere klassen

Fluent vs array

Fluent vs Model

Details van de interne implementatie

Als er geen macro geregistreerd is, zet de __call-methode de waarde in de attributen met de methodenaam als propertysleutel en geeft $this terug. Dat maakt method chaining mogelijk.
Fluent gebruikt de volgende traits, die elk verschillende functionaliteit bieden:
  • Conditionable — conditionele verwerking met when() / unless()
  • InteractsWithData — databewerkingsmethodes zoals data()
  • Macroable — dynamisch methodes toevoegen

Volgende stappen

Collection-klasse

Een verdieping in de Collection-klasse, die met meerdere elementen werkt.

Conditionable-trait

Leer de Conditionable-trait, waarmee je conditionele verwerking vloeiend opschrijft.

Macroable-trait

Leer de Macroable-trait, waarmee je dynamische methodes toevoegt aan bestaande klassen.
Laatst gewijzigd op 6 september 2026