Skip to main content

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.
In Laravel 11 kam der Helper fluent() hinzu, und die Klasse wurde erweitert — jetzt ist ein guter Zeitpunkt, sie einzusetzen.

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.
So können Sie statt eines Arrays eine Fluent API zum Setzen der Werte verwenden.

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

So handhaben Sie verschachtelte Arrays als eigene Fluent-Objekte.

value() — Standardwert dynamisch per Callback

Array-Operationen

toArray() — in ein Array umwandeln

getAttributes() — direkter Zugriff auf interne Attribute

ArrayAccess-Interface

Fluent implementiert ArrayAccess — Sie können damit array-artig arbeiten.

IteratorAggregate-Interface

Fluent lässt sich per foreach iterieren.

JSON-Verarbeitung

toJson() — als JSON-String

toPrettyJson() — formatiertes JSON

JsonSerializable-Interface

Fluent implementiert JsonSerializable, wodurch json_encode() direkt funktioniert.

Zustandsprüfung

isEmpty() / isNotEmpty()

Conditionable-Trait

Fluent nutzt den Trait Conditionable und unterstützt bedingte Verarbeitung.
Mit when() / unless() lassen sich Konfigurationen fluent bedingt schreiben.

Macroable-Trait

Fluent nutzt zudem Macroable, 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

Wenn kein Macro registriert ist, setzt __call den Methodennamen als Schlüssel im Attribut-Array und liefert $this zurück. Genau das ermöglicht Method-Chains.
Fluent verwendet folgende Traits mit jeweils unterschiedlicher Funktion:
  • Conditionable — bedingte Verarbeitung mit when() / unless()
  • InteractsWithData — Datenoperationen wie data()
  • Macroable — dynamisches Ergänzen von Methoden

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.
Zuletzt geändert am 13. Juli 2026