Was ist die Fluent-Klasse?
Fluent ist eine universelle Utility-Klasse, mit der Sie Arrays wie Objekte handhaben. Sie liegt unter Illuminate\Support\Fluent, existiert seit den ersten Laravel-Versionen — wird aber in der offiziellen Doku kaum erwähnt.
Intern verwaltet sie das Array in einer Property und ermöglicht über die Magic Methods __get, __set und __call einen Property-ähnlichen Zugriff.
Instanz erzeugen
Konstruktor
Factory make()
Helper fluent()
Ab Laravel 11 gibt es den Helper fluent(), äquivalent zu Fluent::make().
Property-Zugriff
Dynamisches Lesen und Schreiben
Method-Chain
Über die Magic Method__call werden nicht existierende Methodenaufrufe in Property-Zuweisungen umgewandelt. Die Methoden geben $this zurück und lassen sich verketten.
Wichtige Methoden
get() — Zugriff per Dot-Notation
set() — Setzen per Dot-Notation
fill() — mehrere Properties auf einmal setzen
all() — alle Properties als Array
scope() — verschachtelte Werte in neuen Fluent überführen
value() — Standardwert dynamisch per Callback
Array-Operationen
toArray() — in ein Array umwandeln
getAttributes() — direkter Zugriff auf interne Attribute
ArrayAccess-Interface
Fluent implementiertArrayAccess — Sie können damit array-artig arbeiten.
IteratorAggregate-Interface
Fluent lässt sich perforeach iterieren.
JSON-Verarbeitung
toJson() — als JSON-String
toPrettyJson() — formatiertes JSON
JsonSerializable-Interface
Fluent implementiertJsonSerializable, wodurch json_encode() direkt funktioniert.
Zustandsprüfung
isEmpty() / isNotEmpty()
Conditionable-Trait
Fluent nutzt den TraitConditionable und unterstützt bedingte Verarbeitung.
when() / unless() lassen sich Konfigurationen fluent bedingt schreiben.
Macroable-Trait
Fluent nutzt zudemMacroable, sodass Sie dynamisch Methoden ergänzen können.
Praktische Anwendungsfälle
API-Response-Builder
Config-Builder
Request-Parameter normalisieren
Kombination von Model und Fluent
Formulardaten normalisieren
Vergleich mit anderen Klassen
Fluent vs. Array
Fluent vs. Model
Details der internen Implementierung
__call den Methodennamen als Schlüssel im Attribut-Array und liefert $this zurück. Genau das ermöglicht Method-Chains.
Nächste Schritte
Collection-Klasse
Tiefgehende Betrachtung der Collection-Klasse für mehrere Elemente.
Conditionable-Trait
Bedingte Verarbeitung fluent schreiben mit dem Conditionable-Trait.
Macroable-Trait
Bestehende Klassen dynamisch um Methoden erweitern.