Skip to main content

Cos’è la classe Fluent

La classe Fluent è un’utility che permette di trattare un array come un oggetto. È implementata in Illuminate\Support\Fluent, esiste dalle prime versioni di Laravel ed è quasi assente dalla documentazione ufficiale. Internamente gestisce l’array in una proprietà e, tramite magic method (__get / __set / __call), consente accessi in stile proprietà.
In Laravel 11 è stato aggiunto l’helper fluent() e la classe Fluent è stata potenziata: è il momento giusto per sfruttarla.

Creare un’istanza

Costruttore

Factory method make()

Helper fluent()

In Laravel 11 è stato aggiunto l’helper fluent(), equivalente a Fluent::make().

Accesso alle proprietà

Lettura e scrittura di proprietà dinamiche

Method chaining

Grazie al magic method __call, chiamando un metodo inesistente imposti una proprietà. Il metodo restituisce $this, quindi puoi concatenare.
Con questo meccanismo puoi impostare i valori in stile fluent API invece che con un array.

Metodi principali

get() — accesso con dot notation

set() — impostazione con dot notation

fill() — impostare più proprietà in un colpo solo

all() — ottenere tutte le proprietà come array

scope() — converte un valore annidato in un nuovo Fluent

Così un array annidato diventa un altro oggetto Fluent.

value() — default dinamico con callback

Operazioni con array

toArray() — conversione in array

getAttributes() — accesso diretto agli attributi interni

Interfaccia ArrayAccess

Fluent implementa ArrayAccess, quindi lo usi come un array.

Interfaccia IteratorAggregate

Fluent è iterabile con foreach.

Gestione JSON

toJson() — conversione in stringa JSON

toPrettyJson() — conversione in JSON formattato

Interfaccia JsonSerializable

Fluent implementa JsonSerializable, quindi lo converti direttamente con json_encode().

Verifica dello stato

isEmpty() / isNotEmpty()

Trait Conditionable

Fluent usa il trait Conditionable per supportare l’elaborazione condizionale.
Con when() / unless() scrivi in modo fluente configurazioni condizionali.

Trait Macroable

Fluent usa anche il trait Macroable: puoi aggiungergli dinamicamente metodi.

Casi d’uso pratici

Builder di risposte API

Builder di configurazione

Validazione e trasformazione dei parametri di richiesta

Combinazione tra modello e Fluent

Normalizzazione dei dati di form

Confronto con altre classi

Fluent vs Array

Fluent vs Model

Dettagli dell’implementazione interna

Il metodo __call, se non c’è una macro registrata, imposta il valore usando il nome del metodo come chiave dell’attributo e restituisce $this: è ciò che rende possibile il method chaining.
Fluent usa i seguenti trait, ognuno per una funzionalità diversa:
  • Conditionable — elaborazione condizionale con when() / unless()
  • InteractsWithData — metodi di accesso ai dati come data()
  • Macroable — aggiunta dinamica di metodi

Prossimi passi

Classe Collection

Approfondisci la classe Collection per gestire più elementi.

Trait Conditionable

Impara il trait Conditionable per scrivere elaborazioni condizionali in modo fluent.

Trait Macroable

Impara il trait Macroable per aggiungere metodi dinamici a classi esistenti.
Ultima modifica il 13 luglio 2026