Skip to main content

InteractsWithDataトレイトとは

Illuminate\Support\Traits\InteractsWithData は、「配列ライクな入力データに対する共通API」をまとめたトレイトです。 このトレイト自体は all()data() の2つだけを抽象メソッドとして要求し、実データの取得ロジックは各クラス側に委譲します。代わりに、以下のような高頻度メソッドをまとめて提供します。
  • 存在判定: has(), hasAny(), exists(), missing()
  • 空判定: filled(), isNotFilled(), anyFilled()
  • 条件実行: whenHas(), whenFilled(), whenMissing()
  • 抽出: only(), except()
  • 型変換: string(), boolean(), integer(), float(), date(), enum(), collect()

Request系メソッドとの関係

request() ヘルパーで取得する Illuminate\Http\Request は、Concerns\InteractsWithInput を通して InteractsWithData を取り込みます。 そのため、次のような日常的な入力アクセスはトレイト経由で提供されています。
Request::get()Request クラス本体にある Symfony 互換メソッドです。Laravel 13 のソースコード上でも @deprecated use ->input() instead と明記され、推奨は input() です。

Laravelコアでの主な実装例

直接 InteractsWithData を use するクラス

近い責務を持つ関連実装

  • Illuminate\Session\Storehas(), get(), only(), except() など似たAPIを独自実装しています
  • Illuminate\Validation\Concerns\ValidatesAttributes はバリデーション判定ロジックを提供し、入力アクセスAPIそのものは InteractsWithData とは別責務で設計されています

トレイトと主要クラスの関係

パッケージ開発で自前クラスに組み込む

InteractsWithData は、パッケージ内で「入力配列を保持し、Laravel風の取得APIを提供したい」クラスに向いています。
1

データコンテナクラスを作る

2

型付きアクセサで安全に読む

実践ユースケース

  • 外部APIクライアントのオプションバッグ
  • Webhookペイロードの正規化レイヤー
  • パッケージの設定オーバーライド解決クラス
all()data() だけ実装すれば、入力アクセスAPIを毎回自作せずに済むため、メンテナンスコストを下げられます。

関連ページ

最終更新日 2026年4月18日