Skip to main content

Was ist der InteractsWithData-Trait?

Illuminate\Support\Traits\InteractsWithData ist ein Trait, der eine „gemeinsame API für array-ähnliche Eingabedaten” bündelt. Der Trait selbst verlangt lediglich die beiden abstrakten Methoden all() und data() und delegiert die eigentliche Datenzugriffslogik an die jeweilige Klasse. Im Gegenzug stellt er häufig benötigte Methoden bereit, darunter:
  • Existenzprüfung: has(), hasAny(), exists(), missing()
  • Leerprüfung: filled(), isNotFilled(), anyFilled()
  • Bedingte Ausführung: whenHas(), whenFilled(), whenMissing()
  • Auszug: only(), except()
  • Typkonvertierung: string(), boolean(), integer(), float(), date(), enum(), collect()

Verhältnis zu den Request-Methoden

Der über den Helper request() bezogene Illuminate\Http\Request bindet InteractsWithData über Concerns\InteractsWithInput ein. Daher stehen die alltäglichen Eingabezugriffe wie folgt über den Trait bereit:
Request::get() ist eine Symfony-kompatible Methode direkt in der Klasse Request. Auch im Quellcode von Laravel 13 ist sie ausdrücklich mit @deprecated use ->input() instead markiert; empfohlen wird input().

Wichtige Implementierungen im Laravel-Kern

Klassen, die InteractsWithData direkt einbinden

Verwandte Implementierungen mit ähnlicher Verantwortung

  • Illuminate\Session\Store implementiert eine ähnliche API wie has(), get(), only(), except() selbständig.
  • Illuminate\Validation\Concerns\ValidatesAttributes stellt die Bewertungslogik für die Validierung bereit; die reine Eingabezugriffs-API ist bewusst getrennt vom InteractsWithData entworfen.

Beziehung zwischen Trait und wichtigen Klassen

In eigenen Klassen für die Paketentwicklung einsetzen

InteractsWithData eignet sich für Klassen innerhalb eines Pakets, die „ein Eingabe-Array halten und eine Laravel-artige Zugriffs-API bereitstellen” sollen.
1

Eine Daten-Containerklasse anlegen

2

Über typisierte Accessor sicher lesen

Praktische Anwendungsfälle

  • Options-Bag für externe API-Clients
  • Normalisierungs-Layer für Webhook-Payloads
  • Klasse zur Auflösung von Konfigurations-Overrides in einem Paket
Da Sie nur all() und data() implementieren müssen, sparen Sie sich das erneute Selbstschreiben einer Eingabezugriffs-API und senken die Wartungskosten.

Verwandte Seiten

Zuletzt geändert am 13. Juli 2026