Skip to main content

Qu’est-ce que le trait InteractsWithData

Illuminate\Support\Traits\InteractsWithData est un trait qui regroupe une « API commune pour des données d’entrée assimilables à un tableau ». Ce trait n’exige que deux méthodes abstraites, all() et data(), et délègue la logique de récupération des données réelles à la classe qui l’utilise. En contrepartie, il fournit un ensemble de méthodes couramment utilisées :
  • Vérification d’existence : has(), hasAny(), exists(), missing()
  • Vérification de remplissage : filled(), isNotFilled(), anyFilled()
  • Exécution conditionnelle : whenHas(), whenFilled(), whenMissing()
  • Extraction : only(), except()
  • Conversion de type : string(), boolean(), integer(), float(), date(), enum(), collect()

Relation avec les méthodes de la Request

L’objet Illuminate\Http\Request obtenu via le helper request() intègre InteractsWithData via Concerns\InteractsWithInput. Les accès quotidiens aux entrées sont donc fournis à travers ce trait :
Request::get() est une méthode compatible Symfony présente sur la classe Request. Dans le code source de Laravel 13, elle est explicitement marquée @deprecated use ->input() instead : la méthode recommandée est input().

Principales utilisations dans le cœur de Laravel

Classes utilisant directement InteractsWithData

Implémentations aux responsabilités voisines

  • Illuminate\Session\Store implémente à sa manière une API similaire avec has(), get(), only(), except(), etc.
  • Illuminate\Validation\Concerns\ValidatesAttributes fournit la logique de validation ; l’API d’accès aux entrées elle-même est conçue comme une responsabilité distincte de InteractsWithData.

Relations entre le trait et les classes principales

L’intégrer dans vos classes lors du développement d’un package

InteractsWithData convient parfaitement à une classe qui, dans votre package, doit « conserver un tableau d’entrée et exposer une API de récupération à la Laravel ».
1

Créer une classe conteneur de données

2

Lire de manière sûre avec des accesseurs typés

Cas d’utilisation concrets

  • Sacs d’options pour clients d’API externes
  • Couche de normalisation de payloads de webhooks
  • Classe de résolution de surcharges de configuration de package
En n’implémentant que all() et data(), vous évitez de réécrire à chaque fois une API d’accès aux entrées, ce qui réduit les coûts de maintenance.

Pages associées

Dernière modification le 13 juillet 2026