Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
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\Http\Concerns\InteractsWithInput | Request の入力アクセスAPI |
Illuminate\Support\ValidatedInput | validated() / safe() の戻り値ラッパー |
Illuminate\Support\Fluent | 設定値や任意属性のフルーエント操作 |
Illuminate\Support\UriQueryString | Uri のクエリ文字列操作 |
Illuminate\View\ComponentAttributeBag | Bladeコンポーネント属性の操作 |
近い責務を持つ関連実装
Illuminate\Session\Storeはhas(),get(),only(),except()など似たAPIを独自実装していますIlluminate\Validation\Concerns\ValidatesAttributesはバリデーション判定ロジックを提供し、入力アクセスAPIそのものはInteractsWithDataとは別責務で設計されています
トレイトと主要クラスの関係
パッケージ開発で自前クラスに組み込む
InteractsWithData は、パッケージ内で「入力配列を保持し、Laravel風の取得APIを提供したい」クラスに向いています。
実践ユースケース
- 外部APIクライアントのオプションバッグ
- Webhookペイロードの正規化レイヤー
- パッケージの設定オーバーライド解決クラス
all() と data() だけ実装すれば、入力アクセスAPIを毎回自作せずに済むため、メンテナンスコストを下げられます。