Skip to main content

Cos’è il trait InteractsWithData

Illuminate\Support\Traits\InteractsWithData è un trait che raccoglie “un’API comune per dati di input di tipo array-like”. Il trait richiede come metodi astratti solo all() e data() e delega la logica di recupero dei dati effettivi a ciascuna classe. In cambio fornisce, tutti insieme, i metodi di uso frequente elencati sotto.
  • Verifica di esistenza: has(), hasAny(), exists(), missing()
  • Verifica di valorizzazione: filled(), isNotFilled(), anyFilled()
  • Esecuzione condizionata: whenHas(), whenFilled(), whenMissing()
  • Estrazione: only(), except()
  • Conversione di tipo: string(), boolean(), integer(), float(), date(), enum(), collect()

Relazione con i metodi di Request

L’Illuminate\Http\Request che ottieni dall’helper request() incorpora InteractsWithData tramite Concerns\InteractsWithInput. Per questo motivo, i seguenti accessi quotidiani agli input sono forniti attraverso il trait.
Request::get() è un metodo compatibile con Symfony che risiede nella classe Request stessa. Anche nel codice sorgente di Laravel 13 è annotato con @deprecated use ->input() instead e la raccomandazione è input().

Principali implementazioni nel core di Laravel

Classi che usano direttamente InteractsWithData

Implementazioni con responsabilità simili

  • Illuminate\Session\Store implementa autonomamente API analoghe come has(), get(), only(), except()
  • Illuminate\Validation\Concerns\ValidatesAttributes fornisce la logica di validazione: l’API di accesso agli input è progettata come responsabilità separata da InteractsWithData

Relazione tra il trait e le classi principali

Integrarlo in una tua classe durante lo sviluppo di un pacchetto

InteractsWithData è adatto a classi di un pacchetto che devono “trattenere un array di input e offrire un’API di accesso in stile Laravel”.
1

Crea una classe container per i dati

2

Leggi in sicurezza con accessor tipizzati

Casi d’uso pratici

  • Option bag per client di API esterne
  • Livello di normalizzazione dei payload webhook
  • Classe di risoluzione degli override di configurazione del pacchetto
Implementando solo all() e data() eviti di riscrivere ogni volta l’API di accesso agli input, riducendo i costi di manutenzione.

Pagine correlate

Ultima modifica il 13 luglio 2026