Wat is de Fluent-klasse?
DeFluent-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.
Een instantie maken
Constructor
De factorymethode make()
De helperfunctie fluent()
In Laravel 11 is defluent()-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.
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
value() — standaardwaarde dynamisch opgeven via een callback
Arraybewerkingen
toArray() — omzetten naar een array
getAttributes() — directe toegang tot de interne attributen
De ArrayAccess-interface
Fluent implementeertArrayAccess, 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 implementeertJsonSerializable, dus je kunt de klasse direct omzetten met json_encode().
Toestand controleren
isEmpty() / isNotEmpty()
De Conditionable-trait
Fluent gebruikt deConditionable-trait en ondersteunt dus conditionele verwerking.
when() / unless() schrijf je configuratie op basis van voorwaarden op een vloeiende manier.
De Macroable-trait
Fluent gebruikt ook deMacroable-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
__call-methode de waarde in de attributen met de methodenaam als propertysleutel en geeft $this terug. Dat maakt method chaining mogelijk.
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.