Cos’è la classe Fluent
La classeFluent è 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à.
Creare un’istanza
Costruttore
Factory method make()
Helper fluent()
In Laravel 11 è stato aggiunto l’helperfluent(), 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.
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
value() — default dinamico con callback
Operazioni con array
toArray() — conversione in array
getAttributes() — accesso diretto agli attributi interni
Interfaccia ArrayAccess
Fluent implementaArrayAccess, quindi lo usi come un array.
Interfaccia IteratorAggregate
Fluent è iterabile conforeach.
Gestione JSON
toJson() — conversione in stringa JSON
toPrettyJson() — conversione in JSON formattato
Interfaccia JsonSerializable
Fluent implementaJsonSerializable, quindi lo converti direttamente con json_encode().
Verifica dello stato
isEmpty() / isNotEmpty()
Trait Conditionable
Fluent usa il traitConditionable per supportare l’elaborazione condizionale.
when() / unless() scrivi in modo fluente configurazioni condizionali.
Trait Macroable
Fluent usa anche il traitMacroable: 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
__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.
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.